springboot thymeleaf和shiro 整合 第三篇 密码加盐

package com.ruiguang.config;
import java.util.UUID;


import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.util.ByteSource;
import org.hibernate.boot.archive.scan.internal.PackageDescriptorImpl;
/**
 * encodePassword 方法
 * 即是加密密码明文的方法,该方法的参数除了明文密码 还有salt 这个是盐 
 * 通过这个盐,可以对密码进一步加密,而这个盐,这里其实使用的是userId
 * 是通过UUID获取的一个随机的字符串,作为用户记录主键userid的值
 * 然后它们两个通过encodePassword 方法生成密码暗文
 *
 */
public class PasswordUtil {
private String algorithmName = "md5";   //指定散列算法为MD5,还有别的算法如:SHA256、SHA1、SHA512
   private int hashIterations = 2;     //散列迭代次数 md5(md5(pwd)): new Md5Hash(pwd, salt, 2).toString()
   public void setAlgorithmName(String algorithmName) {
       this.algorithmName = algorithmName;
   }
   public void setHashIterations(int hashIterations) {
       this.hashIterations = hashIterations;
   }
   //加密:输入明文得到密文
   public String encodePassword(String pwd, String salt) {
       //user.setSalt(randomNumberGenerator.nextBytes().toHex());
       String newPassword = new SimpleHash(
               algorithmName,
               pwd,
               ByteSource.Util.bytes(salt),
               hashIterations).toHex();


       return newPassword;
   } 
   public boolean verifyPassword(String targetPassword, String pwd, String salt){
        String newPassword = this.encodePassword(targetPassword, salt);
        if(newPassword.equals(pwd)){
            return true;
        }else{
            return false;
        }
   }
   public static void main(String[] args) {
    //salt 盐
String uuid=UUID.randomUUID().toString().replace("-", "");
System.out.println("uuid:"+uuid);
//admin8d78869f470951332959580424d4bf4f
//密码+盐
String eString=new  PasswordUtil().encodePassword("123456", "admin8d78869f470951332959580424d4bf4f");
System.out.println(eString);
}
}

猜你喜欢

转载自blog.csdn.net/ruiguang21/article/details/80278579