cryptography - ComputeHash 在计算时是否依赖于机器 key ?

标签 cryptography hash

我试图弄清楚如果机器键值不同,已散列的值(使用下面的代码)是否会不同。另外,我想知道其他语言(即 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/

相关文章:

c# - 使用 CryptoAPI 在 Store C# 中通过哈希查找证书

hash - 为短代码选择校验和以防止输入错误

python - Perl 到 Python 哈希排序

security - 关于 p2p 社交网络的注意事项

cryptography - 如何开始使用 BouncyCaSTLe?

c++ - 什么哈希算法用于快速文件哈希?

javascript - 使用 FileReader() 读取文件以从图像文件生成 md5 哈希字符串的正确方法?

python - python中的sha-256散列

c# - 对于一个用户,从xml字符串导入DSA key 失败。权限?安装损坏? KSP错误?

java - 在 JAVA 中使用 PKCS11 创建 PKCS10 证书请求