一、Base64
1.Base64:
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
2.Base64的加密和解密:
- 代码:
@Test
public void testBase64(){
String password = "123456";
// Shiro中提供的Base64的API类的encode()方法可以实现对于给定的字节数组实现加密操作。
byte[] encode = Base64.encode(password.getBytes());
System.out.println(new String(encode));
// Shiro中提供的Base64的API类的decode()方法可以实现对于已加密的字节数粗实现解密操作。
byte[] decode = Base64.decode(encode);
System.out.println(new String(decode));
}
- 运行结果:
二、MD5 Hash
1.MD5加密和MD5 hash的区别:
摘要不同、攻击强度不同、运行速度不同。
①摘要不同
- MD5加密答:MD5加密摘要比MD5摘要短32bit,是264 是数量级的操作。
- MD5 hash:MD5 hash摘要比MD5摘要长32bit,是280 数量级的操作。
②攻击强度不同
- MD5加密:MD5加密对于强行攻击,产生任何一个报文的强度更弱。
- MD5 hash:MD5 hash对于强行攻击,产生任何一个报文的强度更大。
③运行速度不同
-
MD5加密:MD5加密的循环步骤比MD5 hash少,且要处理的缓存小,导致运行速度比MD5 hash快。
-
MD5 hash:MD5 hash的循环步骤比MD5加密多,且要处理的缓存大,导致运行速度比MD5 加密慢。
2.MD5 Hash加密:
- 代码:
@Test
public void testMD5Hash(){
String password = "123456";
//Md5Hash(密码)
System.out.println(new Md5Hash(password));
//Md5Hash(密码,盐值)
System.out.println(new Md5Hash(password,"java"));
//Md5Hash(密码,盐值,hash迭代次数)
System.out.println(new Md5Hash(password,"java",3));
}
- 运行结果: