文章目录
引言:Shiro是apache旗下一个开源框架,它将软件系统的安全认证相关的功能抽取出来,实现用户身份认证,权限授权、加密、会话管理等功能,组成了一个通用的安全认证框架
简介
认证流程,一般实际应用是将盐和散列后的值存在数据库中,自动realm从数据库取出盐和加密后的值由shiro完成密码校验
-
MD5信息摘要算法,16进制32位
-
Salt加盐,增加随机数
加密处理测试
MD5三种加密处理测试
思路:
- 1.直接使用MD5:创建MD5算法,shiro提供一个Md5Hash类
- 2.使用MD5+Salt:创建MD5算法,第二个参数中传入随机盐salt
- 3.使用hash散列对MD5+Salt处理:第三个参数传入hash散列次数
#TestShiroMD5
public class TestShiroMD5 {
public static void main(String[] args) {
//1.创建一个md5算法然后使用
Md5Hash md5Hash = new Md5Hash("123");
//toHex()打印结果
System.out.println(md5Hash.toHex());
//2.使用MD5+salt处理
Md5Hash md5Hash1 = new Md5Hash("123","X07ps");
System.out.println(md5Hash.toHex());
//3.使用md5+salt+hash散列进行处理,1024是次数
Md5Hash md5Hash2 = new Md5Hash("123","X07ps",1024);
System.out.println(md5Hash.toHex());
}
}
# 控制台结果
e10adc3949ba59abbe56e057f20f883e
4521de6bab32eb309f1d6b8756fc2984
fee9f57ca13bd0c77caa5f41184d052c
自定义MD5的Realm测试Demo
思路:
- 修改Shiro密码匹配的默认策略
- 创建
凭证匹配器
- HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
- 设置Realm
使用hash凭证匹配器
- credentialsMatcher.setHashAlgorithmName(“md5”);
- 设置Realm
凭证匹配器的次数
- credentialsMatcher.setHashIterations(1024);
- 凭证匹配器注入Realm即可
- 创建
MD5+Salt+Hash散列的Realm测试Demo
- CustomerMd5Realm
自定义md5+salt的 CustomerMd5Realm
public class CustomerMd5Realm extends AuthorizingRealm {
//授权