散列在dotnet的核心 字符串時,我得到了奇怪的結果我發現這個類似的問題:Computing SHA1 with ASP.NET Core 並發現如何convert a byte array to string在.NET核心使用SHA-1在.NET核心
這是我的代碼:
private static string CalculateSha1(string text)
{
var enc = Encoding.GetEncoding(65001); // utf-8 code page
byte[] buffer = enc.GetBytes(text);
var sha1 = System.Security.Cryptography.SHA1.Create();
var hash = sha1.ComputeHash(buffer);
return enc.GetString(hash);
}
,這是我的測試:
string test = "broodjepoep"; // forgive me
string shouldBe = "b2bc870e4ddf0e15486effd19026def2c8a54753"; // according to http://www.sha1-online.com/
string wouldBe = CalculateSha1(test);
System.Diagnostics.Debug.Assert(shouldBe.Equals(wouldBe));
輸出:
個MHnѐ&ȥGS
我已在NuGet包System.Security.Cryptography.Algorithms
安裝(V 4.3.0)
還與GetEncoding(0)
試圖獲取系統默認編碼。也沒有工作。
有點偏離主題,但SHA-1被棄用(例如參見https://blog.qualys.com/ssllabs/2014/ 09/09/sha1-deprecation-what-you-need-to-know和https://blogs.windows.com/msedgedev/2016/04/29/sha1-deprecation-roadmap等)。如果你需要強大的加密,你應該離開SHA-1。 – YSK
我知道了,但請告訴我正在使用的外部服務;-)(荷蘭銀行) –