gpt4 book ai didi

java - 为什么我的密码与编码的密码不匹配?

转载 作者:行者123 更新时间:2023-12-02 02:34:32 26 4
gpt4 key购买 nike

我正在玩 Spring Security。有一些密码编码器。现在我听说了 Argon2 和图书馆 argon2-jvm 。所以我使用这个库来实现 Argon2 PasswordEncoder。

import de.mkammerer.argon2.Argon2;
import de.mkammerer.argon2.Argon2Factory;
import org.springframework.security.crypto.password.PasswordEncoder;

public class Argon2PasswordEncoder implements PasswordEncoder {

private final static Argon2 ARGON2 = Argon2Factory.create();

@Override
public String encode(CharSequence rawPassword) {
return ARGON2.hash(2, 512, 1, rawPassword.toString());
}

@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return ARGON2.verify(rawPassword.toString(), encodedPassword);
}
}

好的。现在我测试了实现,并使用密码 "Password" 我得到了 "$argon2i$v=19$m=512,t 的哈希值=2,p=1$RXlcbec6BOFAo7tfgeAp7g$z4mUln5y/ylkmNjoK8u3wmQYQxwBzWyRepQaZlGtSPw"

但这不可能是哈希值,我认为哈希值是p=之后的部分,不是吗?

好吧,然后我尝试匹配它们,但失败了。为什么?

System.out.println(encoder.matches("Password", "$argon2i$v=19$m=512,t=2,p=1$RXlcbec6BOFAo7tfgeAp7g$z4mUln5y/ylkmNjoK8u3wmQYQxwBzWyRepQaZlGtSPw");

=> 假

System.out.println(encoder.matches("Password", "1$RXlcbec6BOFAo7tfgeAp7g$z4mUln5y/ylkmNjoK8u3wmQYQxwBzWyRepQaZlGtSPw");

=> 假

如何匹配它们以及为什么存在一些参数,例如哈希的并行性和内存部分?

最佳答案

查看 argon2-library 的测试代码 GitHub ,我认为您使用错误的参数顺序调用 verfiy 。测试用例首先传递哈希值,然后传递纯密码。反之亦然。

关于java - 为什么我的密码与编码的密码不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46581770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com