[英]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.