Luk*_*ina 9 c# mysql cryptography sha1 cryptographic-hash-function
我有几个不同的代码,但简短的故事是我使用SHA1将一些密码插入到MySQL数据库中,并且还将SHA1哈希计算到.NET中并且它们不匹配.我认为这是我的.NET编码代码的问题.
SQL代码:
INSERT INTO user_credentials (Password) VALUES (SHA1('password'));
Run Code Online (Sandbox Code Playgroud)
密码哈希为5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
.NET代码:
public static string GetPasswordHash(string password)
{
// problem here with encoding?
byte[] byteArray = Encoding.ASCII.GetBytes(password);
SHA1 sha = new SHA1CryptoServiceProvider();
byte[] hashedPasswordBytes = sha.ComputeHash(byteArray);
return Encoding.ASCII.GetString(hashedPasswordBytes);
}
Run Code Online (Sandbox Code Playgroud)
密码哈希到[?a ??????%l?3~ ???
谢谢你的帮助!
Mar*_*ers 16
在MySQL示例中,您将编码为十六进制字符串,在.NET示例中,您使用ASCII编码.这两种编码不一样.
如果在.NET版本中转换为十六进制,则会得到正确的结果:
string hex = BitConverter.ToString(hashedPasswordBytes);
Run Code Online (Sandbox Code Playgroud)
结果:
5B-AA-61-E4-C9-B9-3F-3F-06-82-25-0B-6C-F8-33-1B-7E-E6-8F-D8
| 归档时间: |
|
| 查看次数: |
2129 次 |
| 最近记录: |