2

重複の可能性:
C#SHA-1とPHP SHA-1…異なる結果?

sha1(string,true);PHPの同等のメソッドがC#で何であるかを調べようとしています。たくさん検索してコードを書いてみましたが、解決策が見つかりませんでした。sha1PHP関数のように、長さが20の行バイナリ形式で取得する方法を教えてもらえますか: 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 に答える