c# - .net4 上的 SHA1 生成

标签 c# .net hash sha1

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

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

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

哪一个是正确的?

我在这里做错了什么吗?

最佳答案

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

刚刚确认该网站使用 UTF-8。但他们的代码对于某些字符(例如 ')来说是错误的,因为他们通过 sql 转义来输入输入。

但是使用普通 SHA-1 对密码进行哈希处理几乎从来都不是正确的选择。在大多数情况下,例如存储用于登录站点的密码,您应该使用适当的密码哈希函数,例如 PBKDF2、bcrypt 或 scrypt 以及适当的盐。

PBKDF2 在 .net 中实现 Rfc2898DeriveBytes Class

关于c# - .net4 上的 SHA1 生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8051074/

相关文章:

.net - 在 Objective-C 中使用 .NET Web 服务 [iPhone]

c# - 如何对自定义套接字 TCP 协议(protocol)使用证书身份验证?

c# - 使用 C# 中的 Json.Parse 或 Regex 获取单行 JSON 响应

c# - 使用反射和 getCount (.net 4) 从对象中获取集合

c# - 录音机 c# UWP

c# - 如何确定分布式架构?

javascript - web3使用什么哈希加密算法? ethereumjs-util Sha3 返回不同的结果

hash - 从哈希 puppet 中删除值

Perl:常量和编译时与运行时哈希查找?

c# - 等待异步操作