shiro框架中使用SimpleHash加盐进行密码加密的过程

梦里梦外; 2021-10-12 23:13 1111阅读 0赞

本次写的内容不是shiro框架怎么计算hash值的,仅仅是进行使用、

首先声明,本次的加盐的加密方法是不可逆的。

首先引入包。

  1. import org.apache.shiro.crypto.hash.SimpleHash;
  2. import org.apache.shiro.util.ByteSource;

第一个为shiro中的简单哈希的类,

第二个为shiro中的获取字节数组的类。

下图为本次要使用到的SimpleHash的构造器。四个参数,分别

algorithmName代表进行加密的算法名称、

source代表需要加密的元数据,如密码、

salt代表盐,需要加进一起加密的数据、

hashIterations代表hash迭代次数。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2lpaWlpaWxpa2FuZ3NodWFp_size_16_color_FFFFFF_t_70

测试代码如下、

测试中加的盐salt就是用户的姓名。

  1. public class PasswordHelper {
  2. private String algorithmName = "md5";
  3. private int hashIterations = 2;
  4. public void encryptPassword(UserEntity user) {
  5. String newPassword = new SimpleHash(algorithmName, user.getPassWord(),
  6. ByteSource.Util.bytes(user.getUserName()), hashIterations).toHex();
  7. user.setPassWord(newPassword);
  8. }
  9. /**
  10. * 测试使用
  11. */
  12. public static void main(String[] args) {
  13. PasswordHelper passwordHelper = new PasswordHelper();
  14. UserEntity user = new UserEntity();
  15. user.setUserName("潘亚茹");
  16. user.setPassWord("123456");
  17. passwordHelper.encryptPassword(user);
  18. System.out.println(user);
  19. }
  20. }

输出数据如下、

20190819181248297.png

  1. userName=潘亚茹, passWord=0fd20118436982b58e93a61771c61d01

附坐标:

  1. <!-- cas-shiro -->
  2. <dependency>
  3. <groupId>org.apache.shiro</groupId>
  4. <artifactId>shiro-spring</artifactId>
  5. <version>1.2.4</version>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.apache.shiro</groupId>
  9. <artifactId>shiro-ehcache</artifactId>
  10. <version>1.2.4</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.apache.shiro</groupId>
  14. <artifactId>shiro-cas</artifactId>
  15. <version>1.2.4</version>
  16. </dependency>

发表评论

表情:
评论列表 (有 0 条评论,1111人围观)

还没有评论,来说两句吧...

相关阅读

    相关 什么是密码

    生活中,我们为了保证密码的安全性,一般都不会使用明文存储,而是要将明文进行加密,然后再进行存储。假如我们的数据被拖库,代码被泄露,请求被劫持的情况下,也能保证用户的密码

    相关 密码-Salting password

    今天看到一个新鲜词:Salting password,加盐的密码。感觉很是纳闷,这是什么意思呢?上网查了下原来是对密码进行一些混淆增加破解的难度。 一般对密码都不会是明文存储

    相关 Java 简单理解

    背景 对于同一密码,同一加密算法会产生相同的hash值。这样,当用户进行身份验证时,对用户输入的明文密码应用相同的hash加密算法,得出一个hash值,然后使用该hash...