如何将hashlib从python移植到c#

时间:2012-02-06 12:53:35

标签: c# .net python

我正在尝试将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不支持)和摘要。

如果有人可以帮助我,我会感激不尽!

由于

2 个答案:

答案 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)

你知道.NET框架包含一个加密库吗?你呢? 这是.NET的SHA256实现。 This是对加密库的一个很好的概述。

如果您在使用.NET加密库时遇到问题,可能应该了解是否有某种方法可以在C#中实现您想要的内容,而不是移植整个库来执行您想要的操作。