gpt4 book ai didi

tomcat - 如何为 Tomcat JDBCRealm 准备摘要密码?

转载 作者:行者123 更新时间:2023-11-28 22:22:40 25 4
gpt4 key购买 nike

这里的例子http://tomcat.apache.org/tomcat-7.0-doc/realm-howto.html#JDBCRealm user_pass 列的类型是 varchar(15),而 java.security.MessageDigest 类接受并返回 byte[]。应将哪种转换应用于密码 'abcd'(例如)以将其转换为 Tomcat 期望的 MD5 摘要?

附言。

我已经尝试了以下并且有效(与 digest.bat 结果一致)。现在唯一的问题是长度:摘要长于 15 个字符。我可以只换一张 table 吗?

public class DigestRunner {

/**
* @param args
* @throws NoSuchAlgorithmException
*/
public static void main(String[] args) throws NoSuchAlgorithmException {
String password = "abcd";
MessageDigest dig = MessageDigest.getInstance("MD5");

System.out.println(toString(dig.digest(password.getBytes())));

}


public static String toString(byte[] ba)
{
StringBuilder hex = new StringBuilder(ba.length * 2);

for(byte b : ba)
hex.append(String.format("%02x", b));

return hex.toString();
}

}

最佳答案

varchar(15) 对于摘要密码来说肯定太短了,但对于明文密码来说通常就足够了。只需增加尺寸即可。

我使用了以下代码来创建摘要密码:

final MessageDigest messageDigest = java.security.MessageDigest.
getInstance("SHA-256");
final byte bin[] = messageDigest.digest(("admin").getBytes());
System.out.println(Base64.encodeBase64String(bin));

(Base64 来自 Apache Commons Codec )

此外,Tomcat中有一个digest.bat/digest.sh,在你链接的页面上查看。

关于tomcat - 如何为 Tomcat JDBCRealm 准备摘要密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9031515/

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