我目前正在开发一个将 Python 3.2 程序转换为 C# 的项目。
在 python 程序中有一行代码返回一个双倍长度的字符串对象,只包含十六进制数字。
Python程序中的代码是:
if sha1.hexdigest().upper() == hash_string:
#do whatever
我一直在尝试并未能从 python 中的 hashlib 中找到 C# 中的 hexdigest 等价物。
在 C# 中,我已经在一个字节数组中获得了 SHA1 哈希,但是我尝试执行等效于 hexdigest 的所有方法都未能提供与 hash_string 的匹配 - 这是 sha1 的 hexdigest应该匹配的。
我不确定问题是我用来模拟 hexdigest 的方法还是我用来首先生成 sha1 哈希的方法 - 所以如果有人有他们知道的 hexdigest 方法,那就太好了这将允许我消除至少一个可能的问题原因。
我目前用来代替 hexdigest 的方法是:
string hexaHash = "";
foreach (byte b in sha1result)
{
hexaHash += String.Format("{0:x2}", b);
}
string result = hexaHash;
编辑:facepalm好的,我刚刚弄清楚我的问题是什么。在 python 中生成 sha1 哈希时,它是从小写的十六进制字符串中进行的。在我的 C# 中,它是一个大写的十六进制字符串。所以我猜想我正在使用的hexdigest等价物是好的。很抱歉浪费了人们的时间。