如何将hashlib从Python移植到C#
我正在尝试把Python中的hashlib库移植到C#中:
shaA = hashlib.sha256()
shaA.update(yy)
shaA.update(xx)
shaB = shaA.copy()
hashA = shaA.digest()
#Hash B
shaB.update(yy)
shaA = shaB.copy()
hashB = shaB.digest()
#Hash C
shaA.update(xx)
hashC = shaA.digest()
我遇到的问题是,我不太明白在.NET中,SHA256()里的update()是什么意思,还有copy(在.NET的SHA256中不支持)和digest又是什么。
如果有人能帮我解决这个问题,我将非常感激!
谢谢
2 个回答
3
我觉得——虽然不太确定,也没测试过——你的示例代码大致上可以理解为这个:
byte[] hashA, hashB, hashC;
using (var sha = new SHA256Managed())
{
hashA = sha.ComputeHash(Encoding.UTF8.GetBytes(yy + xx));
hashB = sha.ComputeHash(Encoding.UTF8.GetBytes(yy + xx + yy));
hashC = sha.ComputeHash(Encoding.UTF8.GetBytes(yy + xx + yy + xx));
}
各种Python方法的详细解释可以在这个hashlib
文档中找到。
copy
是用来复制哈希对象当前状态的;update
是把一个新的字符串加到哈希对象已有的输入字符串后面;digest
则是从哈希对象已有的输入字符串生成哈希值(也叫消息摘要),并把它返回为一串字节。
我知道的在.NET或C#中没有类似的东西。老实说,我觉得把hashlib
移植过去并没有太大意义。使用.NET自带的哈希库可以让你的代码更简洁、更易懂。