gpt4 book ai didi

java - 使用 Jasypt 加密和解密密码

转载 作者:太空宇宙 更新时间:2023-11-04 06:14:40 26 4
gpt4 key购买 nike

它适用于桌面应用程序,因此我只需要基本的登录安全性,并且我使用一个函数来加密密码,并使用另一个函数将密码从 UI 传递并散列保存到数据库中,并返回 true 或 false 取决于是否匹配。

我尝试使用官方 jasypt 网站上的池化版本,我可以加密,但我不知道如何解密。

//Function to encrypt password
public static String cifrarClave(String clave) {
PooledStringDigester digester = new PooledStringDigester();
digester.setPoolSize(4);
digester.setAlgorithm("SHA-1");
digester.setIterations(50000);
digester.setSaltSizeBytes(32);

//String return is hash that I save into db
return digester.digest(clave);
}

//Function to decrypt password
//clave is old plain that user enter from UI and I want to compare from hash save it into db
public static boolean validarClave(String clave, String hash) {
PooledStringDigester digester = new PooledStringDigester();
digester.setPoolSize(4);
digester.setAlgorithm("SHA-1");
digester.setIterations(50000);

String digest = digester.digest(clave);

//Always fails at that point, I get different hash from compare clave
return digester.matches(digest, hash);
}

我是安全方面的新手,所以我对安全了解不多,我接受其他建议或替代方案,我只想要一个工作示例。

最佳答案

当您使用两个哈希摘要而不是明文消息和先前计算的摘要来调用 jasypt 的 matches(message,digest) 函数时,您错误地使用了它。

validarClave() 中,您首先不必要地根据用户的明文密码 (clave) 计算摘要,然后将其传递给匹配器:

String digest = digester.digest(clave);
//Always fails at that point, I get different hash from compare clave
return digester.matches(digest, hash);

如果您只需将明文密码传递给匹配器,您的方法就会正常工作,如下所示:

digester.matches(clave, hash);

更多信息请访问 jasypt 的 javadocscode examples .

关于java - 使用 Jasypt 加密和解密密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28255410/

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