Java加密和解密函数的常用方法:MD5、SHA1、DES、RSA和AES。
发布时间:2023-08-03 23:03:21
Java中常用的加密和解密方法有MD5、SHA1、DES、RSA和AES。
1. MD5加密和解密:
MD5是一种常用的哈希加密算法,其特点是不可逆,即无法通过加密后的结果还原明文。在Java中,可以使用MessageDigest类实现MD5加密和解密。
- 加密方法:
public static String encryptMD5(String str) throws Exception {
StringBuffer sb = new StringBuffer();
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(str.getBytes());
byte[] digest = md.digest();
for (int i = 0; i < digest.length; i++) {
String hex = Integer.toHexString(digest[i] & 0xFF);
if (hex.length() < 2) {
hex = "0" + hex;
}
sb.append(hex);
}
return sb.toString();
}
- 解密方法:
由于MD5是不可逆的,无法进行解密。
2. SHA1加密和解密:
SHA1也是一种哈希加密算法,其特点与MD5相似。在Java中,可以使用MessageDigest类实现SHA1加密和解密。
- 加密方法:
public static String encryptSHA1(String str) throws Exception {
StringBuffer sb = new StringBuffer();
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.update(str.getBytes());
byte[] digest = md.digest();
for (int i = 0; i < digest.length; i++) {
String hex = Integer.toHexString(digest[i] & 0xFF);
if (hex.length() < 2) {
hex = "0" + hex;
}
sb.append(hex);
}
return sb.toString();
}
- 解密方法:
由于SHA1是不可逆的,无法进行解密。
3. DES加密和解密:
DES是一种对称加密算法,即加密和解密使用相同的密钥。在Java中,可以使用Cipher类实现DES加密和解密。
- 加密方法:
public static String encryptDES(String str, String key) throws Exception {
Cipher cipher = Cipher.getInstance("DES");
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "DES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(str.getBytes());
return Base64.getEncoder().encodeToString(encrypted);
}
- 解密方法:
public static String decryptDES(String str, String key) throws Exception {
Cipher cipher = Cipher.getInstance("DES");
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "DES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(str));
return new String(decrypted);
}
4. RSA加密和解密:
RSA是一种非对称加密算法,即加密和解密使用不同的密钥。在Java中,可以使用KeyPairGenerator类生成密钥对,并使用Cipher类实现RSA加密和解密。
- 加密方法:
public static String encryptRSA(String str, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encrypted = cipher.doFinal(str.getBytes());
return Base64.getEncoder().encodeToString(encrypted);
}
- 解密方法:
public static String decryptRSA(String str, PrivateKey privateKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(str));
return new String(decrypted);
}
5. AES加密和解密:
AES是一种对称加密算法,其安全性更高于DES。在Java中,可以使用Cipher类实现AES加密和解密。
- 加密方法:
public static String encryptAES(String str, String key) throws Exception {
Cipher cipher = Cipher.getInstance("AES");
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "AES");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encrypted = cipher.doFinal(str.getBytes());
return Base64.getEncoder().encodeToString(encrypted);
}
- 解密方法:
public static String decryptAES(String str, String key) throws Exception {
Cipher cipher = Cipher.getInstance("AES");
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes(), "AES");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(str));
return new String(decrypted);
}
以上是Java中常用的加密和解密方法,可以根据需求选择适合的加密算法来保护数据的安全性。
