SHA1CryptoServiceProvider与SHA256Managed是否应返回相同哈希值
你的加密库使用方式没有任何问题。
你看到的相关提问存在表述偏差,正确的结论是同一哈希算法的不同实现类,对相同输入会生成一致的哈希值,你用到的两个类对应完全不同的哈希算法,输出不一致才是正常现象:
SHA1CryptoServiceProvider是SHA1算法的CSP(加密服务提供商)实现,输出长度固定为160位(20字节),你测试得到的YlBiWyJt9ihwriOvjT+sB2DXFYg=就是标准的SHA1计算结果。SHA256Managed是SHA256算法的托管代码实现,输出长度固定为256位(32字节),你测试得到的e8+diSmPG/rhb6Au1rYZCP0vqN5F3Y4hU6PEcwB2Uyg=就是标准的SHA256计算结果。
如果你想验证同算法不同实现的输出一致性,可以补充测试如下代码,就会得到完全相同的输出:
var password = "TestPassword"; using (var csp = new SHA1CryptoServiceProvider()) { var hashBytes = csp.ComputeHash(Encoding.UTF8.GetBytes(password)); Console.WriteLine(Convert.ToBase64String(hashBytes)); } using (var managed = new SHA1Managed()) { var hashBytes = managed.ComputeHash(Encoding.UTF8.GetBytes(password)); Console.WriteLine(Convert.ToBase64String(hashBytes)); }
内容的提问来源于stack exchange,提问作者Terry
相关产品推荐
相关产品推荐

