温馨提示:这篇文章已超过287天没有更新,请注意相关的内容是否还可用!
Java提供了丰富的加密解密算法库,可以用于保护敏感数据的安全性。其中常用的加密解密算法有对称加密算法和非对称加密算法。
对称加密算法使用相同的密钥进行加密和解密,加密速度快,适合对大量数据进行加密。Java中常用的对称加密算法有AES、DES和DESede。
示例代码如下所示,使用AES算法进行加密和解密:
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class SymmetricEncryptionExample {
public static void main(String[] args) throws Exception {
String plainText = "Hello, World!";
String key = "abcdefghijklmnop";
// 加密
byte[] encryptedBytes = encrypt(plainText, key);
String encryptedText = Base64.getEncoder().encodeToString(encryptedBytes);
System.out.println("加密后的文本:" + encryptedText);
// 解密
byte[] decryptedBytes = decrypt(encryptedBytes, key);
String decryptedText = new String(decryptedBytes);
System.out.println("解密后的文本:" + decryptedText);
}
public static byte[] encrypt(String plainText, String key) throws Exception {
SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return cipher.doFinal(plainText.getBytes());
}
public static byte[] decrypt(byte[] encryptedBytes, String key) throws Exception {
SecretKeySpec secretKey = new SecretKeySpec(key.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return cipher.doFinal(encryptedBytes);
}
}
非对称加密算法使用公钥进行加密,私钥进行解密,安全性更高。Java中常用的非对称加密算法有RSA。
示例代码如下所示,使用RSA算法进行加密和解密:
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import javax.crypto.Cipher;
public class AsymmetricEncryptionExample {
public static void main(String[] args) throws Exception {
String plainText = "Hello, World!";
// 生成公私钥对
KeyPair keyPair = generateKeyPair();
// 加密
byte[] encryptedBytes = encrypt(plainText, keyPair.getPublic());
String encryptedText = new String(encryptedBytes);
System.out.println("加密后的文本:" + encryptedText);
// 解密
byte[] decryptedBytes = decrypt(encryptedBytes, keyPair.getPrivate());
String decryptedText = new String(decryptedBytes);
System.out.println("解密后的文本:" + decryptedText);
}
public static KeyPair generateKeyPair() throws Exception {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
return keyPairGenerator.generateKeyPair();
}
public static byte[] encrypt(String plainText, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(plainText.getBytes());
}
public static byte[] decrypt(byte[] encryptedBytes, PrivateKey privateKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
return cipher.doFinal(encryptedBytes);
}
}
以上就是Java中常用的加密解密算法的示例代码。通过使用这些算法,我们可以保护敏感数据的安全性。