知方号

知方号

摘要算法加密tomcat登录密码(加盐,随机盐值)

摘要算法加密tomcat登录密码(加盐,随机盐值)

tomcat 默认使用的安全域是从 conf/tomcat-users.xml 文件中读取用户名、密码和角色信息的,在默认的情况下密码是明文显示的,安全性不够,tomcat支持使用 md5 sha 等算法对密码进行加密。

1.设置安全域加密算法

        在server.xml文件中,找到 Realm 的配置,在最里层的 Realm (一般默认是UserDatabaseRealm)添加标签:

上面的标签表示,使用的凭证处理器为 MessageDigestCredentialHandler,tomcat还支持其它的凭证处理器如SecretKeyCredentialHandler,

上面的标签配置了使用摘要算法 MD5 来加密密码,它的作用是会对用户输入的密码进行 MD5 摘要以后再和tomcat-users.xml中存储的用户密码进行比对。

2.加密tomcat-users.xml文件中的密码

        由于上面第一步设置了使用 MD5 加密算法,所以存储的密码必需是 MD5 摘要后的,tomcat提供了加密脚本,可以方本地将自己的密码按照指定的算法加密,

该加密脚本是 bin/digest.bat (windows)和 bin/digest.bat (Linux),示例如下:

conquer@l:~/Desktop/temp/tomcat-7.0.30/bin$ sh digest.sh -a md5 tomcattomcat:1b359d8753858b55befa0441067aaed3 上述示例将 tomcat 按照 md5 加密后的产生了密文的密码,将其填写到 tomcat-users.xml里,如下所示:

好了,这样别人再打开你的 tomcat-users.xml也看不到你的密码了,通过浏览器照常输入 tomcat 密码,后台验证一样通过。

后记:当然,这样的密码只是简单的一次 MD5 摘要,很容易暴力破解,例如通过 http://www.cmd5.com/ 这个网站,输入1b359d8753858b55befa0441067aaed3很轻松得到“tomcat”明文密码,Tomcat 也考虑到这个问题,也提供了 加盐摘要的方式。

tomcat 的 org.apache.catalina.realm.RealmBase 类的 main 方法,可以使我们方便地计算加盐摘要,可以指定加盐的字节长度,可以指定循环加密次数,示例代码:

public static void main(String[] args) throws Exception { String[] arr = {"-a","md5","-s","32","-i","3","tomcat"}; org.apache.catalina.realm.RealmBase.main(arr); } 上述示例 -s 参数 指定 加盐的字节长度为32, -i 参数指定了循环加密的次数为3,打印出结果:

tomcat:0cc63656bcc70900b645242bcc84119a8766eed1c1d8b85fd1c44d6dd39dd330$3$982cff910b4d918a1450fb3e8810dc86 可以看到,tomcat字符串本次加密使用的32位随机盐值字节转换为16进制字符串为:0cc63656bcc70900b645242bcc84119a8766eed1c1d8b85fd1c44d6dd39dd330

循环加密次数为:3

加密后的结果为:982cff910b4d918a1450fb3e8810dc86

好了,这样的结果就不会那么轻易地被暴力破解了!!!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。