废话不多说,直接上代码
1.MD5 加密
public static String EncoderByMD5(String str) {
try {
// 生成实现指定摘要算法的 MessageDigest 对象。
MessageDigest md = MessageDigest.getInstance("MD5");
// 使用指定的字节数组更新摘要。
md.update(str.getBytes());
// 通过执行诸如填充之类的最终操作完成哈希计算。
byte b[] = md.digest();
// 生成具体的md5密码到buf数组
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0)
i += 256;
if (i < 16)
buf.append("0");
buf.append(Integer.toHexString(i));
}
System.out.println("32位: " + buf.toString());// 32位的加密1
} catch (Exception e) {
e.printStackTrace();
}
2.base64加密
public static String EncoderByBase64(String str) {
MessageDigest base64;
String newstr = "";
try {
base64 = MessageDigest.getInstance("MD5");
try {
newstr = Base64.getEncoder().encodeToString(md5.digest(str.getBytes("utf-8")));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return newstr;
}
3.ASE 加密
/**
* 对输入的内容使用AES加密
*
* @param content
* 要加密的内容
* @param password
* 加密的密钥
* @return
*/
public static byte[] encrypt(String content, String password) {
try {
// KeyGenerator提供(对称)密钥生成器的功能。使用getInstance
KeyGenerator kgen = KeyGenerator.getInstance("AES");
// 类方法构造密钥生成器。
// 使用用户提供的随机源初始化此密钥生成器,使其具有确定的密钥大小
kgen.init(128, new SecureRandom(password.getBytes()));
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
// 使用SecretKeySpec类来根据一个字节数组构造一个SecretKey,,而无须通过一个(基于provider的)SecretKeyFactory.
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
// 创建密码器 //为创建 Cipher对象,应用程序调用 Cipher 的getInstance
// 方法并将所请求转换的名称传递给它。还可以指定提供者的名称(可选)。
Cipher cipher = Cipher.getInstance("AES");
byte[] byteContent = content.getBytes("utf-8");
// 初始化
cipher.init(Cipher.ENCRYPT_MODE, key);
// 按单部分操作加密或解密数据,或者结束一个多部分操作。数据将被加密或解密(具体取决于此Cipher的初始化方式)。
byte[] result = cipher.doFinal(byteContent);
return result;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
/**
* 对输入的内容使用AES解密
*
* @param content
* 要解密的内容
* @param password
* 密钥
* @return
*/
public static byte[] decrypt(byte[] content, String password) {
try {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128, new SecureRandom(password.getBytes()));
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
// 创建密码器
Cipher cipher = Cipher.getInstance("AES");
// 初始化
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] result = cipher.doFinal(content);
// 加密
return result;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
e.printStackTrace();
} catch (BadPaddingException e) {
e.printStackTrace();
}
return null;
}
/**
* 对AES过后的内容BASE64编码
*
* @param content
* @param password
* @return
*/
public static String encodeBase64FromAes(String content, String password) {
byte[] result = encrypt(content, password);
String str = Base64.getEncoder().encodeToString(result);
return str;
}
/**
* BASE64解码后再使用AES解密
*
* @param content
* @param password
* @return
*/
private static String decodeBase64FromAes(String content, String password) {
byte[] result = Base64.getDecoder().decode(content);
result = decrypt(result, password);
return new String(result);
}
4.SHA加密
public static byte[] encryptSHA(byte[] data) throws Exception {
// 创建具有指定算法名称的信息摘要
MessageDigest sha = MessageDigest.getInstance("SHA");
// 使用指定的字节数组对摘要进行最后更新
sha.update(data);
// 完成摘要计算并返回
return sha.digest();
}
5.MAC加密
public static String initMacKey() throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
SecretKey secretKey = keyGenerator.generateKey();
return encryptBASE64(secretKey.getEncoded());
}
public static byte[] encryptHMAC(byte[] data, String key) throws Exception {
SecretKey secretKey = new SecretKeySpec(decryptBASE64(key), KEY_MAC);
Mac mac = Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
return mac.doFinal(data);
}