簡體   English   中英

C#SHA256散列與Python結果不同

[英]C# SHA256 Hashing Different To Python Result

我正在根據發現的Python代碼編寫一個小程序。 我需要幫助的幾行內容。 它是關於使用SHA256加密的值。

python代碼如下:

first = hashlib.sha256((valueOne + valueTwo).encode()).hexdigest()
second = hashlib.sha256(str(timestamp) + value).encode()).hexdigest()

當我執行它時,我的值如下:

first: 93046e57a3c183186e9e24ebfda7ca04e7eb4d8119060a8a39b48014d4c5172b
second: bde1c946749f6716fde713d46363d90846a841ad56a4cf7eaccbb33aa1eb1b70

我的C#代碼是:

string first = sha256_hash((secret + auth_token));
string second = sha256_hash((timestamp.ToString() + secret));

當我執行它時,我的值是:

first: 9346e57a3c183186e9e24ebfda7ca4e7eb4d81196a8a39b48014d4c5172b   
second: bde1c946749f6716fde713d46363d9846a841ad56a4cf7eaccbb33aa1eb1b70

如您所見,這些值略有不同。 python代碼同時返回兩個值,兩個值的長度均為64個字符,其中與C#中的值一樣,分別為60個字符和63個字符。

我的sha256_hash方法來自這里: 獲取字符串的SHA-256字符串

任何幫助,將不勝感激,謝謝。

您的十六進制摘要方法不會為字節<16生成長度為2的十六進制值。字節\\x08僅作為'8'而不是'08'被添加到十六進制輸出中,導致輸出太短。

調整格式以產生0填充的十六進制字符:

foreach (Byte b in result)
    Sb.Append(b.ToString("x2"));

有關如何將字節格式化為十六進制字符串的更多信息,請參見標准數字格式字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM