0

我正在开发的网站使用 MD5 对登录密码进行哈希处理。

一个用户刚刚忘记了他的密码,所以我在数据库中,我将密码设置为我的一个......

update users set pass = md5('thiS1smyp4s5w@rd')
where userid = 974

虽然应用程序使用 MD5 散列并且我已经使用 Md5 散列设置了密码,但我仍然无法使用该用户的详细信息登录,我想知道......

散列算法是否跨平台相同,或者它在 .NET 中的完成方式与它在 MySQL 中的工作方式是否会导致散列值不同?

4

1 回答 1

0
  1. 请不要使用 MD5 来散列密码,这不安全;使用 BCrypt 或 PBKDF2
  2. 无论平台如何, MD5 规范都应该是一致的,也就是说可能导致问题的一件事是输出的十六进制中的字母可能是不同的大小写(例如大写而不是小写),这仅在区分大小写时才重要数据库查询。
  3. 也就是说,可以对密码进行加盐以防止字典攻击,加盐哈希与未加盐的哈希完全不同,这要归功于雪崩效应
于 2015-09-24T23:28:18.830 回答