我试图弄清楚如果机器键值不同,已散列的值(使用下面的代码)是否会不同。另外,我想知道其他语言(即 Java)的实现是否会产生不同的结果。
string hashedPassword = Convert.ToBase64String(
new System.Security.Cryptography.SHA1CryptoServiceProvider().ComputeHash(
System.Text.Encoding.Default.GetBytes(password)));
(我试图在谷歌上找到答案,但找不到任何明确的答案。)
最佳答案
SHA1CryptoServiceProvider.ComputeHash()
将始终为相同的输入返回相同的结果(无论它在哪台机器上运行)。任何其他正确实现的 SHA1 算法也将给出相同的结果。
但请注意,您使用的是 System.Text.Encoding.Default.GetBytes(password)
来计算输入。这不会独立于机器!您应该强烈考虑使用 Encoding.UTF8
反而。
关于cryptography - ComputeHash 在计算时是否依赖于机器 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8908336/