对于整个AppDomain重用SHA256CryptoServiceProvider
的1个实例是否有任何问题(并且只在最后部署它)?或者,在每次散列之前重新创建并处理它是否更好?我打赌只创造一次会更快,但我们能做到吗?换句话说,在下面的示例中是否有任何文档显示哪种方法更好/更合适?函数GetHash
(每次重新创建和放置CSP)或GetHash2
(使用1个静态实例并始终重用它)。
public static class Helper
{
public static string GetHash(string input)
{
using (var hashAlgorithm = new SHA256CryptoServiceProvider())
{
var byteValue = Encoding.UTF8.GetBytes(input);
var byteHash = hashAlgorithm.ComputeHash(byteValue);
return Convert.ToBase64String(byteHash);
}
}
static readonly SHA256CryptoServiceProvider _hashAlgorithm2 = new SHA256CryptoServiceProvider();
public static string GetHash2(string input)
{
var byteValue = Encoding.UTF8.GetBytes(input);
byte[] byteHash;
lock (_hashAlgorithm2)
{
byteHash = _hashAlgorithm2.ComputeHash(byteValue);
}
return Convert.ToBase64String(byteHash);
}
}