gpt4 book ai didi

java - 如何正确使用 org.apache.commons.codec.digest.Md5Crypt?

转载 作者:行者123 更新时间:2023-12-01 12:46:42 24 4
gpt4 key购买 nike

我对 org.apache.commons.codec.digest.Md5Cryp 的正确使用有疑问。在jar中你可以找到方法

public static String md5Crypt(final byte[] keyBytes)

它在内部生成一个随机盐,然后返回一个加密字符串。但我想知道这个函数应该有什么好处,因为在不知道盐的情况下我将永远无法再次检索相同的加密字符串。另一方面,该库不提供像 getRandomSalt() 这样的方法。有人可以指出应该如何使用这个库吗?

最佳答案

验证您使用 md5Crypt 加密的值,使用md5Crypt(byte[], String)方法,其中字符串是您已有的加密值,然后比较两个加密字符串以查看它们是否相同。

String somevalue = "somevalue"; 
String encrypted1 = Md5Crypt.md5Crypt(somevalue.getBytes());
String encrypted2 = Md5Crypt.md5Crypt(somevalue.getBytes(), encrypted1);
String encrypted3 = Md5Crypt.md5Crypt(somevalue.getBytes());
System.out.println("encrypted1==encrypted2: " + encrypted1.equals(encrypted2));
System.out.println("encrypted1==encrypted3: " + encrypted1.equals(encrypted3));

Output:
encrypted1==encrypted2: true
encrypted1==encrypted3: false

在内部,md5Crypt 正在从您传入 md5Crypt(byte[], String) 的加密字符串中提取盐值。方法。

另外,我不知道您的用例是什么,但如果这是用于存储任何类型的凭据,我建议使用 SHA512包含在 Apache 公共(public)资源 Sha2Crypt 中类,(或更好)PBKDF2bCrypt 。 MD5 是一种相当快的散列算法,并非设计用于散列密码。它的速度使其适合文件完整性验证之类的事情,但不利于密码散列,即使使用盐也是如此。

关于java - 如何正确使用 org.apache.commons.codec.digest.Md5Crypt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24637055/

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