在.net4上生成SHA1

时间:2011-11-08 13:23:59

标签: c# .net hash sha1

我重用了一些旧代码,发现我一直在使用这段代码生成SHA1哈希。

HashAlgorithm sha = new SHA1CryptoServiceProvider();
return sha.ComputeHash((new UnicodeEncoding()).GetBytes(password.Trim()));

当我使用以下代码生成SHA1-hash时,我最终没有使用与我测试时相同的哈希,例如,http://gtools.org/tool/sha1-hash-generator/

哪一个是正确的?

我在这里做错了吗?

2 个答案:

答案 0 :(得分:4)

很可能是编码方面的差异。你使用的是UTF-16。尝试使用UTF-8。

刚刚确认此网站使用的是UTF-8。但是他们的代码因某些字符而被破坏,例如',因为他们通过sql转义来输入它们。

但使用普通SHA-1散列密码几乎不是正确的选择。在大多数情况下,例如存储用于登录站点的密码,您应该使用正确的密码散列函数,例如PBKDF2,bcrypt或带有适当盐的scrypt。

PBKDF2在。Rfc2898DeriveBytes Class

中的.net中实现

答案 1 :(得分:0)

SHA-1盐渍的例子:

return Convert.ToBase64String(
    new HMACSHA1(
        Encoding.UTF8.GetBytes(salt))
    .ComputeHash(
        Encoding.UTF8.GetBytes(input)));