`
peterwanghao
  • 浏览: 128520 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用Apache Shiro进行身份认证-密码加密

 
阅读更多

在进行身份认证时,用户的密码一般是用密文的形式存放在数据库中。这样在做比对时不能直接使用用户提交的明文口令。

在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 身份认证例子-源码

    Apache Shiro 是一个强大且易用的 Java 安全框架,它提供了身份认证、授权、加密和会话管理功能,让开发人员可以轻松地在应用中处理安全性问题。本资源包含了一个 Apache Shiro 的身份认证例子的源码,这对于理解和...

    Apache Shiro核心jar包:shiro-core-1.3.2

    Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。 使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。

    apache-shiro-1-2-x-reference

    Apache Shiro是一个功能强大、灵活的开放式安全框架,干净利落地处理身份验证、授权、企业会话管理和加密。 Shiro可以帮助我们完成:认证、授权、加密、会话管理、与Web集成、缓存等。 【apache-shiro-1-2-x-...

    shiro1.7.1.zip

    Apache Shiro 是一个强大且易用的Java安全框架,提供了身份认证、授权、加密和会话管理功能,简化了企业级应用的安全实现。标题中的"shiro1.7.1.zip"表明这是一个包含Apache Shiro 1.7.1版本所有核心模块的压缩包,...

    shiro源码(shiro-root-1.8.0-source-release.zip)

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用程序。它既适用于传统的Web应用,也适用于现代的Java EE和Android应用。现在我们来深入...

    shiro jar包及源码下载

    Apache Shiro是一个强大且易用的Java安全框架,它提供了认证、授权、加密和会话管理功能,可以简化开发人员处理安全的复杂性。Shiro适用于各种应用,从小型独立应用到大型分布式系统,都能有效地支持。 在"shiro-...

    apache-shiro-1-2-x-reference.zip

    Apache Shiro 是一个强大且易用的Java安全框架,提供了身份认证、授权、加密和会话管理功能,简化了企业级应用的安全实现。这个压缩包文件"apache-shiro-1-2-x-reference.zip"包含了Shiro的官方中文参考文档,对于...

    shiro登陆身份认证和权限管理 密码加密

    在“shiro登陆身份认证和权限管理 密码加密”这个主题中,我们将深入理解 Shiro 如何处理用户登录、验证用户身份以及密码的安全存储。 1. **身份认证**:在 Shiro 中,身份认证是验证用户是否是他们声称的那个人的...

    shiro-root-1.2.3-source-release zipa包 和相关jar包

    Apache Shiro是一个强大且易用的Java安全框架,它提供了认证、授权、加密和会话管理功能,可以简化开发人员处理安全的复杂性。在"shiro-root-1.2.3-source-release zipa包"中,包含了Shiro框架的核心源代码,允许...

    shiro1.7.1全包修补漏洞.rar

    Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证、授权、会话管理和加密服务。这个"shiro1.7.1全包修补漏洞.rar"文件包含了针对Apache Shiro 1.7.1版本的一些安全修复和更新,旨在解决可能存在的...

    Apache Shiro教程

    Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证、授权、会话管理和加密等功能。这个教程将帮助你深入理解和有效地使用Shiro框架。在本文中,我们将详细探讨Shiro的核心概念、主要功能和常见用法...

    Apache shiro 1.13.0源码

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,简化了企业级应用的安全实现。Shiro 1.13.0 是其一个重要的版本,包含了多项更新和改进。在这个版本中,开发者可以深入理解其...

    shiro-all jar

    Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证、授权、会话管理和加密服务。"shiro-all jar"是Shiro的核心库,包含了所有Shiro的功能模块,方便开发者在一个JAR包中直接引用,避免了管理多个...

    shiro-1.7.1.zip

    Apache Shiro是一个强大的Java安全框架,它为应用程序提供了身份验证(Authentication)、授权(Authorization)、会话管理(Session Management)和加密(Cryptography)等核心功能。`shiro-1.7.1.zip`是一个包含...

    shiro-root-1.3.2-source-release

    5. **加密服务**:使用Shiro的加密工具对敏感数据进行加密,如用户密码。 总之,"shiro-root-1.3.2-source-release"是一个全面了解和掌握Apache Shiro的宝贵资源,通过深入研究,开发者可以更好地实现应用的安全...

    Apache Shiro 集成-spring

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。Shiro 不仅可以用于Java Web 应用,也可以用于独立的Java应用。在集成Spring时,Shiro ...

    shiro-root-1.32-source-release

    Apache Shiro 是一个强大且易用的 Java 安全框架,提供身份认证、授权、加密和会话管理功能,简化了企业级应用的安全实施。"shiro-root-1.32-source-release" 是 Apache Shiro 的 1.3.2 版本的源码发布包,对于想要...

    shiro-root-1.2.2-source-release.zip

    Apache Shiro 是一个强大且易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可以非常轻松地开发出足够安全的应用。你提到的 "shiro-root-1.2.2-source-release.zip" 文件是Apache Shiro 1.2.2版本的源码...

    shiro1.5.3

    1. **认证(Authentication)**: Shiro 提供了用户身份验证的机制,包括Remember Me服务,可以处理用户的登录和验证过程,确保用户身份的正确性。 2. **授权(Authorization)**: Shiro 提供了细粒度的权限控制,...

    shiro常用jar包-1.2.2

    Shiro提供了一些基础的加密工具,如`org.apache.shiro.crypto.hash.Hash`类用于密码哈希,`CipherService`接口可以进行加解密操作。这些工具可以帮助开发者安全地处理敏感数据。 6. **Web支持** Shiro还提供了Web...

Global site tag (gtag.js) - Google Analytics