在进行身份认证时,用户的密码一般是用密文的形式存放在数据库中。这样在做比对时不能直接使用用户提交的明文口令。
在Shiro中使用org.apache.shiro.authc.credential.SimpleCredentialsMatcher做凭证信息的比对。SimpleCredentialsMatcher实现了
凭证信息的明文比对,即对凭证信息不做任何处理。
通过HashedCredentialsMatcher子类的扩展Shiro支持一些标准的加密算法,如MD5 和 SHA-1。
在使用时也可以根据自身需求定义自己的加密算法。下面是我实现的凭证信息比对类,加密算法是在网上找的DES算法。
public class CustomCredentialsMatcher extends SimpleCredentialsMatcher {
@Override
public boolean doCredentialsMatch(AuthenticationToken token,
AuthenticationInfo info) {
Object tokenCredentials = encrypt(toBytes(token.getCredentials()));
Object accountCredentials = getCredentials(info);
return equals(tokenCredentials, accountCredentials);
}
private byte[] encrypt(byte[] data) {
try {
byte[] key = "11111111".getBytes();
// DES算法要求有一个可信任的随机数源
SecureRandom sr = new SecureRandom();
// 从原始密钥数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec(key);
// 创建一个密匙工厂,然后用它把DESKeySpec转换成
// 一个SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(dks);
// using DES in ECB mode
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
// 用密匙初始化Cipher对象
cipher.init(Cipher.ENCRYPT_MODE, secretKey, sr);
// 执行加密操作
byte encryptedData[] = cipher.doFinal(data);
return encryptedData;
} catch (Exception e) {
System.err.println("DES算法,加密数据出错!");
e.printStackTrace();
}
return null;
}
}
使用时在Shiro.ini文件中加上这个类:
[main]
customMatcher = main.java.name.peter.shiro.realm.CustomCredentialsMatcher
jdbcRealm.credentialsMatcher = $customMatcher
分享到:
相关推荐
Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了身份认证、授权、加密和会话管理功能,让开发人员可以轻松地在应用中处理安全性问题。本资源包含了一个 Apache Shiro 的身份认证例子的源码,这对于理解和...
Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。 使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
Apache Shiro是一个功能强大、灵活的开放式安全框架,干净利落地处理身份验证、授权、企业会话管理和加密。 Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。 【apache-shiro-1-2-x-...
Apache Shiro 是一个强大且易用的Java安全框架,提供了身份认证、授权、加密和会话管理功能,简化了企业级应用的安全实现。标题中的"shiro1.7.1.zip"表明这是一个包含Apache Shiro 1.7.1版本所有核心模块的压缩包,...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用程序。它既适用于传统的Web应用,也适用于现代的Java EE和Android应用。现在我们来深入...
Apache Shiro是一个强大且易用的Java安全框架,它提供了认证、授权、加密和会话管理功能,可以简化开发人员处理安全的复杂性。Shiro适用于各种应用,从小型独立应用到大型分布式系统,都能有效地支持。 在"shiro-...
Apache Shiro 是一个强大且易用的Java安全框架,提供了身份认证、授权、加密和会话管理功能,简化了企业级应用的安全实现。这个压缩包文件"apache-shiro-1-2-x-reference.zip"包含了Shiro的官方中文参考文档,对于...
在“shiro登陆身份认证和权限管理 密码加密”这个主题中,我们将深入理解 Shiro 如何处理用户登录、验证用户身份以及密码的安全存储。 1. **身份认证**:在 Shiro 中,身份认证是验证用户是否是他们声称的那个人的...
Apache Shiro是一个强大且易用的Java安全框架,它提供了认证、授权、加密和会话管理功能,可以简化开发人员处理安全的复杂性。在"shiro-root-1.2.3-source-release zipa包"中,包含了Shiro框架的核心源代码,允许...
Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证、授权、会话管理和加密服务。这个"shiro1.7.1全包修补漏洞.rar"文件包含了针对Apache Shiro 1.7.1版本的一些安全修复和更新,旨在解决可能存在的...
Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证、授权、会话管理和加密等功能。这个教程将帮助你深入理解和有效地使用Shiro框架。在本文中,我们将详细探讨Shiro的核心概念、主要功能和常见用法...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,简化了企业级应用的安全实现。Shiro 1.13.0 是其一个重要的版本,包含了多项更新和改进。在这个版本中,开发者可以深入理解其...
Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证、授权、会话管理和加密服务。"shiro-all jar"是Shiro的核心库,包含了所有Shiro的功能模块,方便开发者在一个JAR包中直接引用,避免了管理多个...
Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography)等核心功能。`shiro-1.7.1.zip`是一个包含...
5. **加密服务**:使用Shiro的加密工具对敏感数据进行加密,如用户密码。 总之,"shiro-root-1.3.2-source-release"是一个全面了解和掌握Apache Shiro的宝贵资源,通过深入研究,开发者可以更好地实现应用的安全...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。Shiro 不仅可以用于Java Web 应用,也可以用于独立的Java应用。在集成Spring时,Shiro ...
Apache Shiro 是一个强大且易用的 Java 安全框架,提供身份认证、授权、加密和会话管理功能,简化了企业级应用的安全实施。"shiro-root-1.32-source-release" 是 Apache Shiro 的 1.3.2 版本的源码发布包,对于想要...
Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。你提到的 "shiro-root-1.2.2-source-release.zip" 文件是Apache Shiro 1.2.2版本的源码...
1. **认证(Authentication)**: Shiro 提供了用户身份验证的机制,包括Remember Me服务,可以处理用户的登录和验证过程,确保用户身份的正确性。 2. **授权(Authorization)**: Shiro 提供了细粒度的权限控制,...
Shiro提供了一些基础的加密工具,如`org.apache.shiro.crypto.hash.Hash`类用于密码哈希,`CipherService`接口可以进行加解密操作。这些工具可以帮助开发者安全地处理敏感数据。 6. **Web支持** Shiro还提供了Web...