什么';这是Python 3.2中的一个C#等价物

本文关键字:一个 等价物 这是 Python 什么 | 更新日期: 2023-09-27 18:30:03

我目前正在进行一个项目,将Python 3.2程序转换为C#。

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

Python程序中的代码位是:

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

我一直试图在C#中从python中的hashlib中找到一个等价的hexdigest,但没有成功。

在C#中,我已经在一个字节数组中获得了SHA1哈希,但我尝试执行的所有等效于六进制摘要的方法都未能提供与hash_string的匹配——这正是SHA1的六进制摘要应该匹配的。

我不确定问题是我用来模拟六进制摘要的方法,还是我用来生成sha1哈希的方法——所以如果有人有一个六进制摘要方法,他们知道有效,那就太棒了,因为这可以让我消除至少一个可能的问题原因。

我目前使用的方法是:

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

编辑:facepalm好吧,我刚刚弄清楚我的问题是什么。当在python中生成sha1哈希时,它是从小写十六进制字符串中生成的。在我的C#中,它是一个大写的十六进制字符串。所以我想我使用的六进制消化等效物是可以的。很抱歉浪费了人们的时间。

什么';这是Python 3.2中的一个C#等价物

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

使用HMACSHA1类进行转换。