Skip to content

存储密码时使用安全 Hash 算法并加盐 #74

@Chenrt-ggx

Description

@Chenrt-ggx

目前,symphony 在数据库中存储用户密码的 MD5,相关代码如下:

final JSONObject user = new JSONObject();
user.put(User.USER_NAME, userName);
user.put(User.USER_EMAIL, email);
user.put(User.USER_PASSWORD, DigestUtils.md5Hex(password));
user.put(UserExt.USER_APP_ROLE, appRole);
user.put(UserExt.USER_STATUS, UserExt.USER_STATUS_C_VALID);

早在十余年前,MD5 已被证实不安全。因而,建议更新 Hash 算法并检查是否存在其它算法问题,一些供参考的算法如下:

  • 非对称加密算法:RSA2048 (国际) 、SM2(国内)。
  • 对称加密算法:AES256 (国际) 、SM4 (国内)。
  • Hash 算法:SHA256 (国际) 、SM3 (国内)。

此外,在存储密码时,需要加盐后进行 Hash,保证即使攻击者获取了数据库中的密码,也无法在短时间内破译以实现任意用户登录,相关实现可以参考 SpringSecurity 中的 BCryptPasswordEncoder。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions