我目前正在研究一个将python 3.2程序转换为c_的项目。
在python程序中,有一行代码返回一个双长度的字符串对象,只包含十六进制数字。
python程序中的代码位是:
if sha1.hexdigest().upper() == hash_string:
#do whatever
我一直在尝试,但没能从python的hashlib中找到一个与hexdigest的c_等价的。
在C中,我已经在字节数组中得到了sha1散列,但是我尝试执行的所有方法都未能提供与hash_字符串的匹配,这是sha1的hexdigest应该匹配的。
我不确定问题是我用来模拟hexdigest的方法,还是我用来生成sha1散列的方法,所以如果有人有一个hexdigest方法,他们知道这种方法可以让我消除问题的至少一个可能原因,那就太好了。
我现在使用的方法是:
string hexaHash = "";
foreach (byte b in sha1result)
{
hexaHash += String.Format("{0:x2}", b);
}
string result = hexaHash;
编辑:facepalm,好吧,我刚刚解决了我的问题。在python中生成sha1散列时,它是从小写十六进制字符串生成的。在我的C它是一个大写的十六进制字符串。所以我想我使用的HexDigest等价物是可以的。抱歉浪费了人们的时间。
最佳答案
使用hmacsha1类转换它。