我正在尝试将hashlib库从python移植到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()方面是什么意思,还有副本(.NET中的SHA256不支持)和摘要。
如果有人可以帮助我,我会感激不尽!
由于
答案 0 :(得分: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));
}
the hashlib
documentation中解释了各种Python方法。
copy
克隆了哈希对象的当前状态; update
在哈希对象的现有输入字符串上附加一个新字符串; digest
从哈希对象的现有输入字符串生成哈希(又名消息摘要),并将其作为字节序列返回。
在.NET或C#中没有我所知的等价物。说实话,移植hashlib
似乎没什么价值。在我看来,使用内置的.NET哈希库可以为您提供更短,更易理解的代码。
答案 1 :(得分:0)