【问题标题】:Compare passwords [closed]比较密码[关闭]
【发布时间】:2019-09-27 03:41:45
【问题描述】:

我将此代码与 Spring 密码加密一起使用,以便比较密码和确认密码:

if(!passwordEncoder.encode(resetDTO.getPassword()).equals(passwordEncoder.encode(resetDTO.getConfirmPassword()))){
....
}

但当我发送正确的值时,它们总是不匹配。比较散列值的正确方法是什么?

【问题讨论】:

  • 你的equals方法错误,或者encode错误,或者getPassword或者getConfirmPassword或者输入数据错误。
  • @luk2302 比较哈希的正确方法是什么?
  • 哈希是字符串,所以string1.equals(string2).
  • 当您可以访问两个原始值时,为什么要首先比较哈希值?仅当哈希是您拥有的唯一信息时,您才需要与哈希进行比较。 (就像你从数据库中获取/比较它一样。)

标签: java spring-security


【解决方案1】:

如果您想验证提交的密码是否与您将使用的加密(散列)密码匹配

passwordEncoder.matches(rawEnteredPassword, storedEncryptedPassword)

(假设passwordEncoderSpring PasswordEncoder

如果您尝试验证密码和密码确认是否相等(如果用户同时输入两个密码),您可以使用

Objects.equals(resetDTO.getPassword(), resetDTO.getConfirmPassword())

【讨论】:

    猜你喜欢
    • 2014-07-12
    • 2017-02-25
    • 2013-05-26
    • 2016-11-09
    • 2017-10-31
    • 2021-04-10
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多