【发布时间】:2014-01-26 12:53:56
【问题描述】:
我正在根据我找到的 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 方法来自这里:Obtain SHA-256 string of a string
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
您的 C# 输出丢失了三个
0字符,这看起来像是您如何打印该数据而不是如何生成哈希摘要的问题。除了这三个缺少的0数字之外,哈希值匹配。 -
@奥莱克西我的第一串现在变为:fd72a372c9c76ab3aa28f52ba722d1e530011efab6116cee9e49e414c16c638其是长63个字符,而第二个去:e5b76f4165491067188fb49de0db8ac2877fa0b9cbc222d998a1ff891b556a60其为长64个字符跨度>
-
@MartijnPieters 然后我的程序继续从这两个字符串中取出字符,它依赖于它们的长度为 64 个字符,但是由于缺少某些字符,它会引发错误。
-
Duplicate,虽然不是同一种编程语言。
-
@user2764359:我已经找到问题了,再看我的回答。我的分析当然是正确的,只是
b.ToString()调用的确切语法让我无法理解。您是否尝试过最新的编辑?
标签: c# python encryption cryptography sha256