Shiro学习-密码的比对及密码的MD5加密(八)

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Shiro学习-密码的比对及密码的MD5加密(八)

密码比对

通过AuthenticatingRealm的credentialsMatcher进行密码的比对

由于你获取数据是从数据库获取的是加密后的密码,所以挺重要的

密码加密

如何把一个字符串加密为MD5

替换当前Realm的CredentialsMatcher属性,可以使用Md5CredentialsMatcher但是推荐使用HashedCredentialsMatcher对象,并设置加密算法

加密的流程

1.为什么使用MD5盐值加密:

2.如何做到:

2.1在doGetAuthenticationInfo方法返回值创建SimpleAuthenticationInfo对象的时候,需要使用SimpleAuthenticationInfo(principal,credentials, credentialSalt,realmName);构造器
2.2 ByteSource.Util.bytes(username); 
2.3盐值需要唯一:一般采用随机字符串和userId
2.4使用new SimpleHash(hashAlgorithmName,credentials,salt,hashIterations)来计算盐值加密后的密码的值
public class ShiroRealm extends AuthenticatingRealm {
//认证
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        //1.将AuthenticationToken转换为UsernamePasswordToken
        UsernamePasswordToken uptoken = (UsernamePasswordToken) token;
        //2.从UsernamePasswordToken获取username
        String username = uptoken.getUsername();
        //3.调用数据库的方法,从数据库中查询username 对应的用户记录
        System.out.println("从数据库中获取该用户名对应的记录");
        //4.若用户不存在,则抛出异常UnknownAccountException
        if(username.equals("qweqw")){
            throw new UnknownAccountException("用户不存在");
        }
        //5.根据用户信息的情况,决定是否抛出其他异常
        if(username.equals("123")){
            throw new LockedAccountException("用户被锁定");
        }
        //6.根据用户的情况,来构建AuthenticationInfo对象并返回,通常使用的实现类为SimpleAuthenticationInfo
        //以下信息是从数据库中获取的
        //1.principal:认证的实体信息,可以是username,也可以是数据表对应的用户的实体类对象
        Object principal = username;
        //2.credentials:密码
        Object credentials = null;
        if("admin".equals(username)){
            credentials = "";  
        }else if("user".equals(username)){
            credentials = "";
        }
        //3.realmName:当前realm对象的name调用父类的getName()方法即可
        String  realmName = getName();
        //4.盐值
        ByteSource credentialSalt= ByteSource.Util.bytes(username); 
        //加密一般使用的是随机字符串或userId
        SimpleAuthenticationInfo info = null;
        info =   new SimpleAuthenticationInfo(principal,credentials, credentialSalt,realmName);
        return info;
    }
目录
相关文章
|
1月前
|
存储 Java 数据库
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
这篇文章介绍了如何在Java中通过加盐和加密算法(如MD5和SHA)安全地存储密码,并提供了一个密码工具类PasswordUtils和密码编码类PasswordEncoder的实现示例。
29 10
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
|
1月前
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
24 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
1月前
|
存储 安全 Java
shiro学习二:shiro的加密认证详解,加盐与不加盐两个版本。
这篇文章详细介绍了Apache Shiro安全框架中密码的加密认证机制,包括不加盐和加盐两种加密方式的实现和测试。
82 0
|
3天前
|
安全 算法 网络安全
网络安全的盾牌与利剑:漏洞防御与加密技术的双刃舞
【10月更文挑战第37天】在数字世界的海洋里,网络安全是航船的锚,保护我们的数据不受风暴侵袭。本文将深入浅出地探讨网络安全的两大支柱——漏洞防御和加密技术。我们将从网络安全的基本概念出发,逐步深入到漏洞的类型、检测方法以及防御策略。同时,我们也将探索加密技术的原理和应用,如何通过这一技术保护信息的完整性和私密性。最后,我们将讨论提升个人及组织安全意识的重要性,以及如何构建一个安全的网络环境。这不仅是技术人员的战斗,每个人都是自己信息安全的第一道防线。让我们一起扬帆起航,探索网络安全的世界,学习如何成为自己数据的守护者。
|
3天前
|
SQL 安全 网络安全
网络安全的护城河:漏洞防御与加密技术的深度解析
【10月更文挑战第37天】在数字时代的浪潮中,网络安全成为守护个人隐私与企业资产的坚固堡垒。本文将深入探讨网络安全的两大核心要素——安全漏洞和加密技术,以及如何通过提升安全意识来强化这道防线。文章旨在揭示网络攻防战的复杂性,并引导读者构建更为稳固的安全体系。
13 1
|
3天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第38天】本文将探讨网络安全与信息安全的重要性,包括网络安全漏洞、加密技术和安全意识等方面。我们将通过代码示例和实际操作来展示如何保护网络和信息安全。无论你是个人用户还是企业,都需要了解这些知识以保护自己的网络安全和信息安全。
|
2天前
|
存储 安全 网络安全
网络安全与信息安全:漏洞、加密技术与安全意识的交织
【10月更文挑战第39天】在数字化时代,网络安全与信息安全成为保护个人隐私和组织资产的重要屏障。本文将探讨网络安全中的常见漏洞、加密技术的应用以及提升安全意识的重要性。通过具体案例分析,我们将深入了解网络攻击的手段和防御策略,同时提供实用建议,以增强读者对网络安全的认识和防护能力。
|
2天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
【10月更文挑战第39天】在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将探讨网络安全漏洞、加密技术以及安全意识等方面的内容,帮助读者更好地了解网络安全的重要性,并提供一些实用的技巧和建议来保护个人信息和设备安全。
|
3天前
|
SQL 安全 网络安全
网络防线之下:探索加密技术与安全意识的力量
【10月更文挑战第38天】在数字时代的浪潮中,网络安全成为了我们每个人都无法回避的话题。本文将带你一探网络安全的脆弱面纱,揭示漏洞背后的真相,并通过加密技术的奥秘和提升个人安全意识的重要性,共同构筑一道坚固的防御墙。我们将从基础概念出发,逐步深入到技术细节,最终落实到日常生活中的安全实践,以期让每一位读者都能成为自己信息资产的守护者。
|
3天前
|
SQL 安全 网络安全
网络安全的守护者:漏洞管理与加密技术
【10月更文挑战第38天】在数字时代的浪潮中,网络安全成为了保护个人隐私和企业资产的重要防线。本文将深入探讨网络安全的两个核心要素——安全漏洞的管理和先进的加密技术。通过分析常见的网络攻击手段和漏洞案例,我们揭示了强化网络安全的必要性。同时,我们将介绍加密技术的基本原理及其在保障信息安全中的应用,强调了提升公众的安全意识和采取预防措施的重要性。文章旨在为读者提供实用的知识和策略,以构建更加坚固的网络防护墙。

热门文章

最新文章