繁体   English   中英

.net4上的SHA1生成

[英]SHA1 generation on .net4

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

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

当我使用以下代码生成SHA1-hash时,我得到的哈希值与使用例如http://gtools.org/tool/sha1-hash-generator/进行测试时的哈希值不同

哪一个是正确的?

我在这里做错什么了吗?

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

刚刚确认该站点使用UTF-8。 但是它们的代码对于某些字符(例如'是无效' ,因为它们将输入通过sql转义。

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

PBKDF2在.net中的Rfc2898DeriveBytes类中实现

SHA-1盐化示例:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM