Java中的加密和解密函数及其用法
Java中的加密和解密函数主要用于保护敏感数据,在网络传输和存储过程中进行加密和解密操作,确保数据安全。
Java中常用的加密算法有MD5、SHA、AES等,下面就介绍一下Java中常用的加密和解密函数及其用法。
1. MD5加密和解密函数
MD5(Message Digest algorithm 5)是一种哈希加密算法,它将任意长度的二进制串(文本、图片、视频等)映射成一个128-bit的哈希值。MD5加密具有不可逆性,即无法从MD5的结果反推出原始数据。
在Java中,MD5加密和解密可以通过MessageDigest类来实现。
//MD5加密
public static String md5Encrypt(String str){
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
byte[] b = md.digest();
int i;
StringBuilder sb = new StringBuilder("");
for (byte aB : b) {
i = aB;
if (i < 0)
i += 256;
if (i < 16)
sb.append("0");
sb.append(Integer.toHexString(i));
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "";
}
}
//调用MD5加密
String md5Result = md5Encrypt("123456");
//MD5解密
//由于MD5是单向的,无法进行解密
2. SHA加密和解密函数
SHA(Secure Hash Algorithm)是一种可靠的信息加密算法,它可以将数据以512位为单位进行分组,并对每个512位的数据分组进行消息摘要。SHA加密也是一种哈希函数,可以将任意大小的消息转换为一个大小固定的消息摘要。
在Java中,SHA加密和解密也可以通过MessageDigest类来实现。
//SHA加密
public static String shaEncrypt(String str) {
try {
MessageDigest sha = MessageDigest.getInstance("SHA");
byte[] b = sha.digest(str.getBytes());
StringBuilder sb = new StringBuilder();
for (byte aB : b) {
String hex = Integer.toHexString(aB & 0xFF);
if (hex.length() == 1) {
sb.append("0");
}
sb.append(hex);
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return "";
}
}
//调用SHA加密
String shaResult = shaEncrypt("123456");
//SHA解密
//同样由于SHA也是单向的,无法进行解密
3. AES加密和解密函数
AES(Advanced Encryption Standard)是一种可靠的对称加密算法,它可以将明文加密成密文,然后通过相同的密钥将密文还原成明文。AES加密和解密中使用同一个密钥,因此保密性更强。
在Java中,可以使用javax.crypto包中的Cipher类来实现AES加密和解密。
//AES加密
public static String aesEncrypt(String str, String key) throws Exception {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] b = cipher.doFinal(str.getBytes());
return Base64.getEncoder().encodeToString(b);
}
//调用AES加密
String key = "1234567890123456";
String aesResult = aesEncrypt("hello world", key);
//AES解密
public static String aesDecrypt(String str, String key) throws Exception {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] b = Base64.getDecoder().decode(str.getBytes());
byte[] result = cipher.doFinal(b);
return new String(result);
}
//调用AES解密
String aesDecryptResult = aesDecrypt(aesResult, key);
以上就是Java中常用的加密和解密函数及其用法,有了加密和解密函数,我们就可以保护我们的数据安全了。
