The*_*der 2 c# python encoding digest
我试图将python程序移植到c#.这段话应该是一个演练,但目前正在折磨我:
hash = hashlib.md5(inputstring).digest()
Run Code Online (Sandbox Code Playgroud)
在c#中生成类似的MD5哈希之后,创建一个与原始python程序类似的哈希字符串或者我的整个应用程序将失败是至关重要的.
我的困惑在于在c#中转换为字符串时使用的编码
?Encoding enc = new ?Encoding();
string Hash =enc.GetString(HashBytes); //HashBytes is my generated hash
Run Code Online (Sandbox Code Playgroud)
因为我在使用Encoding.Default时无法创建两个类似的哈希值
string Hash = Encoding.Default.GetString(HashBytes);
Run Code Online (Sandbox Code Playgroud)
所以我想知道python的deafult hash.digest()编码会有所帮助
编辑
好吧,也许更多代码会更清楚地表达我的问题.在python程序中计算散列后,执行一些计算,即
hash = hashlib.md5(inputstring).digest()
for i in range(0,6):
value += ord(hash[i])
return value
Run Code Online (Sandbox Code Playgroud)
现在你能看出为什么两个不同的Hash字符串会有问题吗?运行python程序时出现的一些字符由'?'重新表示 在C#中.
我认为你使用的是Python的早期版本而不是3,你的字符串是正常的str.
如果您正在讨论输出,则摘要方法返回一个由原始字节组成的字符串.C#中的等效类型byte[],您似乎已经拥有.它不是文本,因此使用Encoding类没有任何意义.
如果你在谈论输入,那么md5函数会接受一个普通str的字节,这是一个字节串.在此之前,您必须先查看代码,以确定数据的编码方式.
编辑:
关于你发布的代码,它所做的只是将哈希中的六个第一个字节的值加在一起.你应该能够弄清楚如何在C#中做到这一点.
并确保您了解一串字节和一串字符之间的区别.
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |