07.密码加密
MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。MD5与对称和非对称加密算法不同,这两种密码是防止信息被窃取,而摘要算法的目标是用于证明原文的完整性。虽然在04年被证明可以被破解,因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途,但是MD5可以通过多次加密确保安全性。
创建MD5加密
import org.apache.shiro.crypto.hash.Md5Hash;
import org.apache.shiro.crypto.hash.SimpleHash;
public class MD5 {
public static void main(String[] args) {
//明文密码
String password = "diamond";
System.out.println("明文密码:"+password);
//MD5加密
Md5Hash md5Hash = new Md5Hash(password);
System.out.println("MD5加密:"+md5Hash.toHex());
//MD5加盐加密
Md5Hash md5Hash2 = new Md5Hash(password,"salt");
System.out.println("MD5加盐加密:"+md5Hash2.toHex());
//MD5多次加盐加密
Md5Hash md5Hash3 = new Md5Hash(password,"salt",2);
System.out.println("MD5多次加盐加密:"+md5Hash3.toHex());
//父类加密
SimpleHash simpleHash = new SimpleHash("MD5",password,"salt",2);
System.out.println("父类加密:"+simpleHash.toHex());
}
}
我们可以通过MD5Hash来实现在Shiro中的加密,其三个参数为,原明文密码,盐值,加密次数。其多次加密即为在前一次的加密的结果后在此加密。