MD5和Base64
Base64加密属于可逆性的加密,意思就是既可以加密,也可以解密。
而MD5加密属于不可逆性的加密,只能够给我们提供加密的方式,却没有解密的方式,一般情况多应用与登录注册界面。
MD5算法特点
MD5算法具有以下特点:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。
2、容易计算:从原数据计算出MD5值很容易。
3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。
java中使用MD5算法的工具类代码如下:
public class MD5Utils {
public static String encode(String resStr) {
String encodeStr=DigestUtils.md5Hex(resStr);
return encodeStr;
}
}
Base64算法特点
1、将数据按照 3个字节一组的形式进行处理,每三个字节在编码之后被转换为4个字节。即:如果一个数据有6个字节,可编码后将包含6/3*4=8个字节。
2、当数据的长度无法满足3的倍数的情况下,最后的数据需要进行填充操作,即补“=” ,这里“=”是填充字符,不要理解为第65个字符。
3、Base64是编码算法,不是加密算法,只是用来编码字节数组,形成字符串的,并提供了解码功能。
java中使用Base64算法的工具类如下:
public class Base64Utils {
public static String encodeByBase64(String srcStr) {
Base64 base=new Base64();
String encodeToString="";
try {
encodeToString = base.encodeToString(srcStr.getBytes("UTF-8"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
};
return encodeToString;
}
public static String decodeByBase64(String encodeStr) {
Base64 base=new Base64();
String decodeStr="";
byte[] decode = base.decode(encodeStr);
try {
decodeStr=new String(decode,"UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return decodeStr;
}
}
注:这两个工具类的使用都要引入外界的jar包,jar包地址为:
https://download.youkuaiyun.com/download/zhuhuihui123/11227620