加密算法分别分为:
散列哈希-[MD5、SHA1、CRC32]
对称-[DES,3DES(TDEA、Triple DES),AES、,Blowfish,RC4、RC5,IDEA]
Base64、Rabbit、Escape。
【三种分类】
1、对称加密:密钥只有一个,解密、解密都是这个密码,加解密速度快,典型的对称加密有DES、AES、RC4等
2、非对称加密:密钥成对出现,分别为公钥和私钥,从公钥无法推知私钥,反之,从私钥也无法推知公钥,加密和解密使用不同的密钥,公钥加密需要私钥解密,反之,私钥加密需要公钥解密。非对称加密速度较慢,典型的非对称算法有:RSA,DSA,DSS.
3、Hash算法:这是一种不可逆的算法,它常用于验证数据的完整性。
【1.MD5加密解密】
import java.security.MessageDigest;
public class MD5Utils {
// MD5加密,32位
public static String MD5(String str) {
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e) {
System.out.println(e.toString());
e.printStackTrace();
return "";
}
char[] charArray = str.toCharArray();
byte[] byteArray = new byte[charArray.length];
for (int i = 0; i < charArray.length; i++) {
byteArray[i] = (byte) charArray[i];
}
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++) {
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16) {
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
public static void main(String[] args) {
System.out.println("MD5后:" + MD5("Miracle"));
}
}
【2.Base64加密解密】
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
import java.io.IOException;
import java.util.Base64;
public class BaseUtils {
public static void main(String[] args) {
String str = "Miracle";
try {
byte[] bytes = str.getBytes();
//Base64 加密
String encoded = Base64.getEncoder().encodeToString(bytes);
System.out.println("Base 64 加密后:" + encoded);
//Base64 解密
byte[] decoded = Base64.getDecoder().decode(encoded);
String decodeStr = new String(decoded);
System.out.println("Base 64 解密后:" + decodeStr);
//另一种写法:
String frozen = (new BASE64Encoder()).encodeBuffer(str.getBytes());
System.out.println("另一种写法 加密后:" + frozen);
String defrozen = new String((new BASE64Decoder()).decodeBuffer(frozen));
System.out.println("另一种写法 解密后:" + defrozen);
} catch (IOException e) {
e.printStackTrace();
}
}
}