我目前正在开发一个将 Python 3.2 程序转换为 C# 的项目。
在 python 程序中,有一行代码返回一个双倍长度的字符串对象,仅包含十六进制数字。
Python 程序中的代码如下:
if sha1.hexdigest().upper() == hash_string:
#do whatever
我一直在尝试从 python 中的 hashlib 中找到 C# 中的 hexdigest 的等效项,但未能成功。
在 C# 中,我已经在字节数组中获得了 SHA1 哈希,但是我尝试执行相当于 hexdigest 的所有方法都未能提供与 hash_string 的匹配 - 这就是 sha1 的 hexdigestshould match.
我不确定问题是我用来模拟 hexdigest 的方法还是我用来生成 sha1 哈希值的方法 - 所以如果有人有一个 hexdigest 方法,那就太棒了know这样做可以让我消除至少一个可能的问题原因。
我目前用来代替 hexdigest 的方法是:
string hexaHash = "";
foreach (byte b in sha1result)
{
hexaHash += String.Format("{0:x2}", b);
}
string result = hexaHash;
EDIT: facepalm好吧,我刚刚弄清楚我的问题是什么。当在 python 中生成 sha1 哈希值时,它是从小写的十六进制字符串生成的。在我的 C# 中,它是一个大写的十六进制字符串。所以我猜想我使用的 hexdigest 等效项就可以了。很抱歉浪费了人们的时间。
var hmac = BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)