作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这里的例子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/
我是一名优秀的程序员,十分优秀!