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);
}
}
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);
}
}