c# - C# 中字符串的 SHA256 哈希值与网站上的哈希值不一致

标签 c# hash sha256

如果我使用 SHA256 使用以下方法在 C# 中对字符串“password”进行哈希处理,我会得到它作为我的输出:

e201065d0554652615c320c00a1d5bc8edca469d72c2790e24152d0c1e2b6189

但是this website(SHA-256 produces a 256-bit (32-byte) hash value)告诉我有是:

5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8

我显然遇到了数据格式问题或类似问题。任何想法为什么这个 C# SHA256Managed 方法返回不同的东西?我发送方法“密码”作为输入参数。

    private static string CalculateSHA256Hash(string text)
    {
        UnicodeEncoding UE = new UnicodeEncoding();
        byte[] hashValue;
        byte[] message = UE.GetBytes(text);

        SHA256Managed hashString = new SHA256Managed();
        string hex = "";

        hashValue = hashString.ComputeHash(message);
        foreach (byte x in hashValue)
        {
            hex += String.Format("{0:x2}", x);
        }
        return hex;
    }

最佳答案

UnicodeEncoding是 UTF-16,保证将所有字符扩展到两到四个字节以表示它们的 Unicode 代码点(另请参阅 MSDN 上的备注部分)。

使用(静态)Encoding.UTF8相反,因此大多数字符将适合一个字节。这取决于您需要模仿哪个系统是否适用于所有字符串。

关于c# - C# 中字符串的 SHA256 哈希值与网站上的哈希值不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31170035/

相关文章:

ios - SHA-256 散列与 key swift

具有 RSA 签名的 Java 存储过程 SHA256 不可用

python - 类型错误 : no salt specified in flask(about sha256)

c# - DEVEXPRESS - xtrareport - 分页符

c# - 在虚拟化 WPF TreeView 中滚动非常不稳定

c++ - x86 或 x64 上的散列之间的区别

git - 如何获取在预接收 Hook 中提交的所有哈希值?

c# - 如何使用 C# Runspace 加载 powershell 模块

c# - 从 c# 2.0 中的一系列值中获取不同值的高效逻辑

arrays - 如何在 Ruby 的散列中放置一个散列数组?