java代码实现MD5加密

MD5加密加盐

发文前,说几句。。
1.最近在重新温习了一下shiro这个权限框架,遇到了加密的问题,在网络上看到了一些文章写了关于java代码实现加密。
2.这篇文章写我在shiro框架下加密加盐。

话不多说,先上代码。

package com.yikun.md5;

import org.apache.shiro.crypto.hash.Md5Hash;
import org.apache.shiro.crypto.hash.SimpleHash;

public class MD5Demo {
	public static void main(String[] args) {

		String pwd = "apple";// 原密码
		//第一种方式
		Md5Hash md5 = new Md5Hash(pwd);
		// 输出加密后的密码
		System.out.println("加密后的密码=" + md5.toString());
		//第二种方式
		SimpleHash hsah = new SimpleHash("md5",pwd);
		System.out.println("加密后的密码=" + hsah.toString());
	}
}

控制台:
加密后的密码=1f3870be274f6c49b3e31a0c6728957f
加密后的密码=1f3870be274f6c49b3e31a0c6728957f

事实证明→只要采用的时md5加密,那么两种加密方式 结果是一样的。
但是通过解密工具还是可以还原密码 apple,这时就需要加盐(密钥)了。
注意:混合的盐(salt)不同,运算出的结果也不同。
简单的加盐还是可以破解,这是就需要多次加密!

一般数据加密,都会选择加盐和加密次数
看下面代码 →→

package com.md5;

import org.apache.shiro.crypto.hash.Md5Hash;
import org.apache.shiro.crypto.hash.SimpleHash;

public class MD5Demo {
	public static void main(String[] args) {
		// 指定混合在加密算法中的盐(只有自己知道)
		String salt = "accp";
		String pwd = "apple";// 原密码
		//设置加密次数
		int count =3;
		// 第一种方式
		Md5Hash md5 = new Md5Hash(pwd, salt,count);
		// 输出加密后的密码
		System.out.println("加密后的密码=" + md5.toString());
		// 第二种方式
		SimpleHash hsah = new SimpleHash("md5", pwd, salt,count);
		System.out.println("加密后的密码=" + hsah.toString());
	}
}

你可能感兴趣的:(java)