繁体   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