首页 / 算法 / 第五讲 散列算法(加密算法)
第五讲 散列算法(加密算法)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了第五讲 散列算法(加密算法),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3167字,纯文字阅读大概需要5分钟。
内容图文
1、在身份认证过程中往往会涉及加密。如果不加密那么数据信息不安全。Shiro内容实现比较多的散列算法。如MD5,SHA等。并且提供了加盐功能。比如"1111"的MD5码为"b59c67bf196a4758191e42f76670ceba",这个MD5码可以在很多破解网站上找到对应的原密码。但是如果为"1111"+姓名,那么能找到原密码的难度就会增加。
2、测试MD5案例
1 package com.sun123.shiro; 2 3 import org.apache.shiro.crypto.hash.Md5Hash; 4 import org.apache.shiro.crypto.hash.SimpleHash; 5 6 public class Md5Demo { 7 8 public static void main(String[] args) { 9 //使用MD5加密算法 加密 10 Md5Hash md5 = new Md5Hash("1111"); 11 System.out.println("1111=="+md5.toString()); 12 13 //加盐 14 md5 = new Md5Hash("1111","sxt"); 15 System.out.println("1111=="+md5.toString()); 16 17 //迭代次数 18 md5 = new Md5Hash("1111","sxt",2); 19 System.out.println("1111=="+md5.toString()); 20 21 SimpleHash hash = new SimpleHash("md5","1111","sxt",2); 22 System.out.println("1111=="+hash.toString()); 23 } 24 }
运行结果:
3、在自定义的Realm中使用散列算法
Realm的实现:
1 package com.sun123.realm; 2 3 import org.apache.shiro.authc.AuthenticationException; 4 import org.apache.shiro.authc.AuthenticationInfo; 5 import org.apache.shiro.authc.AuthenticationToken; 6 import org.apache.shiro.authc.SimpleAuthenticationInfo; 7 import org.apache.shiro.authz.AuthorizationInfo; 8 import org.apache.shiro.realm.AuthorizingRealm; 9 import org.apache.shiro.subject.PrincipalCollection; 10 import org.apache.shiro.util.ByteSource; 11 12 public class UserRealm extends AuthorizingRealm { 13 14 /** 15 * 自定义realm的实现 该realm类提供了两个方法 16 * doGetAuthorizationInfo 获取认证信息 17 * doGetAuthenticationInfo 获取权限信息 18 */ 19 @Override 20 public String getName() { 21 // 自定义 22 return "userRealm"; 23 } 24 25 // 完成身份认证,并且返回认证信息 26 // 如果身份认证失败,返回null 27 @Override 28 protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { 29 // 获取用户输入的用户名 30 String username = (String) token.getPrincipal();// 获取身份信息 31 System.out.println("username:" + username); 32 // 根据用户名到数据库查询密码信息——模拟 33 // 假定从数据库获取的密码为1111和盐值 34 String pwd = "e41cd85110c7533e3f93b729b25235c3"; 35 String salt = "sxt"; 36 // 将从数据库中查询的信息封装到SimpleAuthenticationInfo中 37 SimpleAuthenticationInfo info = new SimpleAuthenticationInfo(username, pwd,ByteSource.Util.bytes(salt),getName()); 38 return info; 39 } 40 41 // 授权的信息 42 @Override 43 protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection arg0) { 44 // TODO Auto-generated method stub 45 return null; 46 } 47 48 }
shiro.ini
1 [main] 2 credentialsMatcher=org.apache.shiro.authc.credential.HashedCredentialsMatcher 3 credentialsMatcher.hashAlgorithmName=md5 4 credentialsMatcher.hashIterations=2 5 userRealm=com.sun123.realm.UserRealm 6 userRealm.credentialsMatcher=$credentialsMatcher 7 securityManager.realm=$userRealm
内容总结
以上是互联网集市为您收集整理的第五讲 散列算法(加密算法)全部内容,希望文章能够帮你解决第五讲 散列算法(加密算法)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。