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

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

1.设置安全域加密算法

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

<CredentialHandler algorithm="MD5" className="org.apache.catalina.realm.MessageDigestCredentialHandler"/>

上面的标签表示,使用的凭证处理器为 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 tomcat
tomcat:1b359d8753858b55befa0441067aaed3

上述示例将 tomcat 按照 md5 加密后的产生了密文的密码,将其填写到 tomcat-users.xml里,如下所示:

<user username="tomcat" password="1b359d8753858b55befa0441067aaed3" roles="tomcat"/>

好了,这样别人再打开你的 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

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


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值