加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – .NET和MySQL中SHA1的区别

发布时间:2020-12-15 03:57:36 所属栏目:百科 来源:网络整理
导读:我有几个不同的代码,但简短的故事是我使用SHA1将一些密码插入 MySQL数据库,并将SHA1哈希计算到.NET中,并且它们不匹配.我认为这是我的编码代码在.NET中的问题. SQL代码: INSERT INTO user_credentials (Password) VALUES (SHA1('password')); 密码哈希到5baa
我有几个不同的代码,但简短的故事是我使用SHA1将一些密码插入 MySQL数据库,并将SHA1哈希计算到.NET中,并且它们不匹配.我认为这是我的编码代码在.NET中的问题.

SQL代码:

INSERT INTO user_credentials (Password) VALUES (SHA1('password'));

密码哈希到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);
}

密码散列为[?a?%l?3????

感谢任何帮助!

解决方法

在MySQL示例中,您将编码为 hexadecimal字符串,在.NET示例中,您将以ASCII编码.两个编码不一样.

如果您在.NET版本中转换为十六进制,则会得到正确的结果:

string hex = BitConverter.ToString(hashedPasswordBytes);

结果:

5B-AA-61-E4-C9-B9-3F-3F-06-82-25-0B-6C-F8-33-1B-7E-E6-8F-D8

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读