2

可能重复:
C# SHA-1 与 PHP SHA-1……不同的结果?

我试图找出sha1(string,true);C# 中的 PHP 等效方法。我尝试了很多搜索并尝试编写一些代码,但找不到任何解决方案。谁能告诉我如何获得sha1长度为 20 的行二进制格式,例如 PHP 函数:PHP 手册中的 SHA1

在 PHP 中:

sha1($sampletext, true);

在 C# 中:

string sampletext= "text";
SHA1 hash = SHA1CryptoServiceProvider.Create();
byte[] plainTextBytes = Encoding.ASCII.GetBytes(dataString);
byte[] hashBytes = hash.ComputeHash(plainTextBytes);

两者都返回不同的输出。

谢谢

4

1 回答 1

2

这个 IDEOne 测试似乎产生了与在 C# 中对哈希使用 UTF-8 编码相同的输出:

string sampletext = "text";
System.Security.Cryptography.SHA1 hash = System.Security.Cryptography.SHA1CryptoServiceProvider.Create();
byte[] plainTextBytes = Encoding.UTF8.GetBytes(sampletext);
byte[] hashBytes = hash.ComputeHash(plainTextBytes);

foreach (byte b in hashBytes) {
    Console.Write(string.Format("{0:x2}", b));
}

这将是特定于平台的,具体取决于 PHP 处理它的方式。它甚至可能是某些文档中的 ASCII。这一切都与字符编码有关。

于 2012-08-06T05:38:37.830 回答