Java函数如何实现对字符串的加密和解密
发布时间:2023-07-04 18:12:21
Java 中实现对字符串的加密和解密可以使用以下方法:
1. 使用对称加密算法:
对称加密算法使用相同的密钥来进行加密和解密。
常见的对称加密算法有:DES、AES、DESede等。
加密示例代码:
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
public String encrypt(String key, String data) throws Exception {
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedData = cipher.doFinal(data.getBytes());
return Base64.getEncoder().encodeToString(encryptedData);
}
解密示例代码:
public String decrypt(String key, String encryptedData) throws Exception {
DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] data = Base64.getDecoder().decode(encryptedData);
byte[] decryptedData = cipher.doFinal(data);
return new String(decryptedData);
}
2. 使用非对称加密算法:
非对称加密算法使用公钥加密数据,私钥解密数据。
常见的非对称加密算法有:RSA、DSA等。
加密示例代码:
import java.security.Key;
import java.security.KeyFactory;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import javax.crypto.Cipher;
public String encrypt(String publicKey, String data) throws Exception {
byte[] keyBytes = Base64.getDecoder().decode(publicKey);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
Key key = keyFactory.generatePublic(keySpec);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] encryptedData = cipher.doFinal(data.getBytes());
return Base64.getEncoder().encodeToString(encryptedData);
}
解密示例代码:
public String decrypt(String privateKey, String encryptedData) throws Exception {
byte[] keyBytes = Base64.getDecoder().decode(privateKey);
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
Key key = keyFactory.generatePrivate(keySpec);
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] data = Base64.getDecoder().decode(encryptedData);
byte[] decryptedData = cipher.doFinal(data);
return new String(decryptedData);
}
以上示例代码可以实现对字符串的加密和解密操作,具体的加密算法和密钥生成方式可以根据实际需求进行调整。
