重用SHA256CryptoServiceProvider

时间:2015-12-06 15:07:54

标签: c# .net

对于整个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);

    }

}

0 个答案:

没有答案