shiro教程3(加密)

简介: shiro教程3(加密)

image.pngimage.pngimage.png

@Test
public void Md5Test() {
  // 对单个信息加密
  Md5Hash md5 = new Md5Hash("123456");
  System.out.println(md5.toString());
  // 加密添加盐值 增大解密难度
  md5 = new Md5Hash("123456","aaa");
  System.out.println(md5.toString());
  // 加密添加盐值 增大解密难度 2迭代两次
  md5 = new Md5Hash("123456","aaa",2);
  System.out.println(md5);
}

输出的结果:

e10adc3949ba59abbe56e057f20f883e
88316675d7882e3fdbe066000273842c
a7cf41c6537065fe724cc9980f8b5635

image.png

@Override
protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
  // 获取账号信息
  String principal = (String) token.getPrincipal();
  // 正常逻辑此处应该根据账号去数据库中查询,此处我们默认账号为 root 密码123456
  // 验证账号
  if(!"root".equals(principal)){
    // 账号错误
    return null;
  }
  //String pwd = "123456";
  // 12345 根据 盐值 aaa 加密获取的密文
  //88316675d7882e3fdbe066000273842c  1次迭代的密文
  //a7cf41c6537065fe724cc9980f8b5635  2次迭代的密文
  String pwd = "88316675d7882e3fdbe066000273842c";
  // 验证密码
  AuthenticationInfo info = new SimpleAuthenticationInfo(
      principal, pwd,new SimpleByteSource("aaa"),"myrealm");
  return info;
}

image.png

[main]
#定义凭证匹配器
credentialsMatcher=org.apache.shiro.authc.credential.HashedCredentialsMatcher
#散列算法
credentialsMatcher.hashAlgorithmName=md5
#散列次数
credentialsMatcher.hashIterations=1
#将凭证匹配器设置到realm
customRealm=com.dpb.realm.MyRealm
customRealm.credentialsMatcher=$credentialsMatcher
securityManager.realms=$customRealm

测试

@Test
public void test() {
  // 1.获取SecurityManager工厂对象
  Factory<SecurityManager> factory = 
      new IniSecurityManagerFactory("classpath:shiro.ini");
  // 2.通过Factory对象获取SecurityManager对象
  SecurityManager securityManager = factory.getInstance();
  // 3.将SecurityManager对象添加到当前运行环境中
  SecurityUtils.setSecurityManager(securityManager);
  // 4.获取Subject对象
  Subject subject = SecurityUtils.getSubject();
  AuthenticationToken token = new UsernamePasswordToken("root", "123456");
  // 登录操作
  try {
    subject.login(token);
  } catch (UnknownAccountException e) {
    System.out.println("账号出错...");
  } catch(IncorrectCredentialsException e){
    System.out.println("密码出错...");
  }
  // 获取登录的状态
  System.out.println(subject.isAuthenticated());
}

image.pngimage.pngimage.pngimage.png

相关文章
|
4月前
|
存储 JSON 安全
使用shiro对数据库中的密码进行加密存储(java+springboot+shiro)
使用shiro对数据库中的密码进行加密存储(java+springboot+shiro)
177 0
|
4月前
|
XML 算法 数据安全/隐私保护
Shiro -认证凭据(密码)加密的那些事
Shiro -认证凭据(密码)加密的那些事
59 0
|
存储 安全 算法
2021年你还不会Shiro?----4.使用MD5+盐+hash散列进行密码加密
上一篇文章里介绍了使用自定义的Realm来实现数据的获取,不过,数据的获取依然不是来源于真实的数据库或者是nosql,只是包装了一个方法,假装从这个方法里获取了数据库中的用户信息,然后我们返回了一个SimpleAccount,这个对象携带了用户名与密码,当时我们是明文返回的密码。这样做很显然是不安全的,一旦数据来源被攻破,所有的用户信息都会被泄露。所以这里我们介绍下,常用的密码加密策略。
170 0
2021年你还不会Shiro?----4.使用MD5+盐+hash散列进行密码加密
|
12月前
|
数据库 数据安全/隐私保护
Shiro学习-密码的比对及密码的MD5加密(八)
Shiro学习-密码的比对及密码的MD5加密(八)
92 0
|
数据安全/隐私保护
Shiro的Md5加密(带盐加密+Md5多次迭代)
Shiro的Md5加密(带盐加密+Md5多次迭代)
|
缓存 安全 网络安全
Shiro框架02权限认证+MD5加盐加密+散列1024+Hex/Base64(源码)
Shiro框架02权限认证+MD5加盐加密+散列1024+Hex/Base64(源码)
Shiro框架02权限认证+MD5加盐加密+散列1024+Hex/Base64(源码)
|
数据安全/隐私保护
Shiro 提供的AES 对称式加密/解密方式——AesCipherService的使用案例
Shiro 提供的AES 对称式加密/解密方式——AesCipherService的使用案例
|
安全 Java API
Java中使用Shiro实现对密码加盐并使用MD5加密处理
我们在保存用户密码等敏感信息的时候,需要进行加密处理保存,才能更安全地保护用户个人信息安全
283 0
|
存储 Java 数据库
springboot整合shiro(含MD5加密)(下)
springboot整合shiro(含MD5加密)
springboot整合shiro(含MD5加密)(下)
|
Java 数据库连接 数据库
springboot整合shiro(含MD5加密)(上)
关于shiro介绍以及shiro整合spring,我在另一篇文章中已详细介绍,此处不作说明,请参考spring整合shiro。
springboot整合shiro(含MD5加密)(上)