摘要算法加密tomcat登录密码(加盐,随机盐值)
2017-10-26 16:36
507 查看
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),示例如下:
上述示例将 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
好了,这样的结果就不会那么轻易地被暴力破解了!!!
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
好了,这样的结果就不会那么轻易地被暴力破解了!!!
相关文章推荐
- Spring Security笔记:使用BCrypt算法加密存储登录密码
- 新浪微博登录之前JS密码加密算法之C#版
- 新浪微博登录之前JS密码加密算法之C#版
- Spring Security笔记:使用BCrypt算法加密存储登录密码
- 使用BCrypt算法加密存储登录密码用法及好处
- 注册和登录还有那个加密的密码
- django使用邮箱账号密码做用户登录认证,启用加密
- web登录用户名密码加密
- 通过给Tomcat打Monkey Patch实现数据库连接池配置用户密码加密
- [置顶] App安全登录之密码、通讯加密方法(MD5,Base64,RSA,AES)
- 通过密码 加密解密算法,java
- 加密解密信息摘要算法搜集
- 在JSP中动态生成随机验证码,登录时后台校验验证码,以及如何避免同一个验证码被重复提交爆破密码
- linux上的tomcat8.5通过账号密码登录查看
- 如何实现Tomcat连接池数据库密码加密
- 用RSA加密实现Web登录密码加密传输
- C#实现京东登录密码加密POST
- QQ空间登录表单密码客户端加密代码
- 常见密码算法总结--(2)分组密码加密模式
- 用RSA加密实现Web登录密码加密传输(网页口令传输加密)