在Python 3.2中,什么是C#等效的hexdigest?

时间:2012-04-05 15:31:13

标签: c# python python-3.x sha1 hashlib

我目前正在开发一个将Python 3.2程序转换为C#的项目。

在python程序中有一行代码,它返回一个双倍长度的字符串对象,只包含十六进制数字。

Python程序中的一些代码是:

if sha1.hexdigest().upper() == hash_string:
    #do whatever

我一直在尝试并且未能在python中的hashlib中找到C#of hexdigest中的等价物。

在C#中我已经在一个字节数组中得到了SHA1哈希,但是我试图执行相当于hexdigest的所有方法都无法提供与hash_string的匹配 - 这就是sha1的十六进制< em>应匹配。

我不确定这个问题是我用来模拟hexdigest的方法还是我用来生成sha1哈希的方法 - 所以如果有人有一个hexdigest方法,它会很棒 know 可以帮助我消除问题的至少一个可能原因。

我现在使用的方法代替hexdigest:

string hexaHash = "";
foreach (byte b in sha1result)
{
    hexaHash += String.Format("{0:x2}", b);
}
string result = hexaHash;

编辑: facepalm 好吧,我刚刚解决了我的问题所在。在python中生成sha1哈希时,它是从小写的十六进制字符串中进行的。在我的C#中,它是一个大写的十六进制字符串。所以我猜我正在使用的hexdigest等价物就好了。很抱歉浪费了人们的时间。

2 个答案:

答案 0 :(得分:4)

var hmac = BitConverter.ToString(hashBytes).Replace("-", "").ToLower();

答案 1 :(得分:2)

使用HMACSHA1类进行转换。