我目前正在从事一个将Python 3.2程序转换为C#的项目。在Python 3.2中,C#等价于十六进制数?
在python程序中有一行代码,它返回一个双倍长度的字符串对象,只包含十六进制数字。
的代码在Python程序中的位是:
if sha1.hexdigest().upper() == hash_string:
#do whatever
我一直在尝试和失败,以找到在Python中hashlib在hexdigest的C#等效。
在C#中,我已经在字节数组中获得了SHA1哈希,但是我试图执行相同的十六进制的所有方法都未能提供与hash_string的匹配 - 这是sha1的十六进制数应该与相符。
我不确定问题是我用来模拟十六进制的方法还是我用来生成sha1哈希的方法 - 所以如果有人使用了十六进制方法,他们知道的作品,这将使我能够消除至少一个可能的问题的原因。
我代替hexdigest的使用在目前的方法是:
string hexaHash = "";
foreach (byte b in sha1result)
{
hexaHash += String.Format("{0:x2}", b);
}
string result = hexaHash;
编辑:捂脸没关系,我只是工作了我的问题是什么。当在python中生成sha1哈希时,它使用小写的十六进制字符串来完成它。在我的C#中,它是一个大写的十六进制字符串。所以我猜想我使用的最简单的等价物很好。对不起浪费人们的时间。
总是时来自外部系统的比较字符串保证双方都是大写的,因为情况下,可以在外部系统和代码将无法最终改变,所以总是做'localValue.ToUpper()== externalValue.ToUpper( )' – sll 2012-04-05 15:48:31
Dup - http://stackoverflow.com/questions/3899644/convert-python-to-c-sharp – 2012-04-05 15:48:38