我有以下方法:
public static string Sha256Hash(string input) {
if(String.IsNullOrEmpty(input)) return String.Empty;
using(HashAlgorithm algorithm = new SHA256CryptoServiceProvider()) {
byte[] inputBytes = Encoding.UTF8.GetBytes(input);
byte[] hashBytes = algorithm.ComputeHash(inputBytes);
return BitConverter.ToString(hashBytes).Replace("-", String.Empty);
}
}
有没有一种方法可以使它异步?我希望使用 async 和 await 关键字,但是 HashAlgorithm
类没有为此提供任何异步支持。
另一种方法是封装所有逻辑在一个:
public static async string Sha256Hash(string input) {
return await Task.Run(() => {
//Hashing here...
});
}
但是这种方法似乎不够简洁,而且我不确定它是否是一种正确(或高效)的异步操作方式。
有什么办法可以实现这个目标吗?