use*_*359 1 c# python encryption cryptography sha256
我正在根据我找到的 Python 代码编写一个小程序。有几行我需要帮助。它是关于使用 SHA256 加密的值。
python代码如下:
first = hashlib.sha256((valueOne + valueTwo).encode()).hexdigest()
second = hashlib.sha256(str(timestamp) + value).encode()).hexdigest()
Run Code Online (Sandbox Code Playgroud)
当我执行它时,我的值如下:
first: 93046e57a3c183186e9e24ebfda7ca04e7eb4d8119060a8a39b48014d4c5172b
second: bde1c946749f6716fde713d46363d90846a841ad56a4cf7eaccbb33aa1eb1b70
Run Code Online (Sandbox Code Playgroud)
我的 C# 代码是:
string first = sha256_hash((secret + auth_token));
string second = sha256_hash((timestamp.ToString() + secret));
Run Code Online (Sandbox Code Playgroud)
当我执行它时,我的价值观是:
first: 9346e57a3c183186e9e24ebfda7ca4e7eb4d81196a8a39b48014d4c5172b
second: bde1c946749f6716fde713d46363d9846a841ad56a4cf7eaccbb33aa1eb1b70
Run Code Online (Sandbox Code Playgroud)
如您所见,这些值略有不同。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"));
Run Code Online (Sandbox Code Playgroud)
有关如何将字节格式化为十六进制字符串的更多信息,请参阅标准数字格式字符串。
| 归档时间: |
|
| 查看次数: |
2324 次 |
| 最近记录: |