java—是否可以恢复pbkdf2哈希密码?

lndjwyie  于 2021-06-29  发布在  Java
关注(0)|答案(2)|浏览(348)

使用类 PBEKeySpec 以及 SecretFactory 只有,而且知道 salt 以及 coded 有办法解密吗 coded 恢复 password ?

public static byte[] encodePassword(char[] password, byte[] salt) {
    PBEKeySpec spec = new PBEKeySpec(password, salt, ITERATIONS, KEY_LENGTH);
    Arrays.fill(password, Character.MIN_VALUE);
    try {
        SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1");
        byte[] coded = skf.generateSecret(spec).getEncoded();
        return coded;
    } catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
        throw new AssertionError("Error while hashing a password: " + e.getMessage(), e);
    } finally {
        spec.clearPassword();
    }
}
yqkkidmi

yqkkidmi1#

不,不可能从密码哈希算法(如pbkdf2)中恢复密码。不可逆的事实是使用这种算法的主要原因之一。

7vux5j2d

7vux5j2d2#

如果你知道密钥和盐,你可以强行输入密码,但这需要很长时间。
单向加密是您无法在许多站点上“恢复”密码的原因,只能重置密码,这是在登录期间存储密码和比较编码字符串的建议方法。

相关问题