前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shiro自定义RealmAnd散列算法

Shiro自定义RealmAnd散列算法

原创
作者头像
杨不易呀
发布2023-11-22 10:14:29
2920
发布2023-11-22 10:14:29
举报
文章被收录于专栏:杨不易呀

前言

Apache Shiro是一个强大的Java安全框架,提供了身份验证、授权、加密和会话管理功能。自定义Realm和使用散列算法是Shiro中两个关键的概念。

创建一个类继承 AuthorizingRealm,然后覆盖 doGetAuthenticationInfo 方法,在此方法当中去从数据库中获取用户信息,交给验证器去验证用户的信息是否合法,如下图所示:

代码语言:java
复制
/**
 * @author yby6
 */
public class MyRealm extends AuthorizingRealm {
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        return null;
    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        // 获取用户名
        String username = (String) token.getPrincipal();

        // 假如以下定义的用户名和密码是从数据库中查询出来的,实际中需要注入Dao去数据库中进行查询然后进行验证查询出来的信息是否合法
        String myName = "yby6";
        String password = "1234";

        // 如果输入的名称不和数据库查询出来的一致
        if (!myName.equals(username)) {
            return null;
        }

        // 如果等于,交给认证器去认证即可我们就无须关心了
        return new SimpleAuthenticationInfo(username, password, this.getName());
    }
}

ini 文件当中在进行配置一下,配置我们自定义的 Realm,让安全管理器使用 Realm 的时候,让他使用我们定义好的 Realm,配置完成了之后启动运行即可。测试方式同我们之前的方式一样的。

代码语言:text
复制
myRealm=top.it6666.realm.MyRealm
securityManager.realms=$myRealm

概述

散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的数据,常见的散列算法如 MD5SHA 等。

使用 Shiro 进行散列密码

  • Md5Hash
代码语言:java
复制
@Test
public void encryption() {
    Md5Hash md5Hash = new Md5Hash("yby6");
    System.out.println(md5Hash);
}

通过加盐的方式来对密码进一步保护。

代码语言:java
复制
@Test
public void encryption() {
    Md5Hash md5Hash = new Md5Hash("yby6", "it6666");
    System.out.println(md5Hash);
}

还可以进行二次散列。

代码语言:java
复制
@Test
public void encryption() {
    Md5Hash md5Hash = new Md5Hash("yby6", "it6666", 2);
    System.out.println(md5Hash);
}

Md5Hash的几个参数主要是:

  • 第一个:需要加密的信息
  • 第二个:盐
  • 第三个:散列次数
  • SimpleHash
代码语言:java
复制
@Test
public void encryption() {
    SimpleHash simpleHash = new SimpleHash("md5", "yby6", "it6666", 2);
    System.out.println(simpleHash);
}

SimpleHash的几个参数主要是:

  • 第一个:算法名称
  • 第二个:需要加密的信息
  • 第三个:盐
  • 第四个:散列次数

最后

本期结束咱们下次再见👋~

🌊 关注我不迷路,如果本篇文章对你有所帮助,或者你有什么疑问,欢迎在评论区留言,我一般看到都会回复的。大家点赞支持一下哟~ 💗

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 概述
  • 使用 Shiro 进行散列密码
  • 最后
相关产品与服务
多因子身份认证
多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档