当前位置: 代码迷 >> java >> md5随机盐实现,包括新的注册/更改密码
  详细解决方案

md5随机盐实现,包括新的注册/更改密码

热度:55   发布时间:2023-08-02 10:31:49.0

我正在尝试在现有应用程序上实现随机盐md5算法。 用户密码作为md5哈希存储在数据库中。 对于现有用户,请执行以下步骤

在客户端(javascript)

client_password = md5(md5(plain_password) + random_salt)

在服务器端

server_password = md5(md5_password + same_random_salt),
check client_password to server_password

我正在努力寻找解决方案,以在更改密码的情况下在数据库中存储不含盐的用户md5密码。

谢谢

首先:不要使用MD5:强度不够。

@Shaggy Frog的出色建议,请使用bycrypt。 这些帖子应该可以帮助您:


参见 。

当有人保存密码时,您将在服务器上执行以下操作:

BCrypt.hashpw(plain_password, salt);

当有人尝试登录时:

if(BCrypt.checkpw(password_typed_by_user, stored_hash)
{
  //itmatches.. log him/her in.
} 

您可以做的是使用用户名(或用户名中的几个字母)作为盐,因此您也不必将其存储在某个地方。

更改密码后,您需要再次获取纯文本密码(在服务器上),然后再次对其进行哈希处理,就像最初保存密码时一样。 如果您正在考虑检索,那是没有办法的,那就是哈希。 像大多数网站一样,您可以将密码更改为一些随机数字,然后通过电子邮件将其发送到请求的地址。

客户端加密毫无用处,因为您最终无法控制结果。 仅服务器端加密有效。

将密码存储为MD5哈希不是最佳实践。 这就是网站容易被黑客入侵的方式。 盐对您无济于事。

  相关解决方案