我正在为我的应用程序使用 Spring Security。当用户第一次注册时,他们的密码会使用 BCryptPasswordEncoder
进行加密。
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String hashedPassword = passwordEncoder.encode(password);
现在,在更改密码的情况下,用户输入当前密码,我需要检查当前密码是否与数据库中保存的加密密码相同。
我知道不可能使用 BCryptPasswordEncoder
生成两个具有相同字符串的相同加密哈希。因此,比较密码是否相同的唯一方法可能是获取数据库中保存的原始密码并与当前输入的密码进行比较。
那么,有什么方法可以比较密码或从数据库保存的散列密码中获取原始密码吗?
最佳答案
您只需对照数据库中的编码密码检查原始密码。例如,
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
String p = bCryptPasswordEncoder.encode("SomeCoolPassword");
System.out.println(bCryptPasswordEncoder.matches("SomeCoolPassword", p));
关于java - 如何从 BCryptPasswordEncoder 获取原始密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39116688/