1. 非对称
在pom.xml文件中添加以下依赖
<artifactId>spring-boot-starter-security</artifactId>
配置
@Configuration
public class AsymmetricEncryptionConfig {
@Bean
public KeyPair keyPair() throws NoSuchAlgorithmException {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(2048);
return keyPairGenerator.generateKeyPair();
}
@Bean
public String publicKey(KeyPair keyPair) {
return new String(Base64.getEncoder().encode(keyPair.getPublic().getEncoded()));
}
@Bean
public String privateKey(KeyPair keyPair) {
return new String(Base64.getEncoder().encode(keyPair.getPrivate().getEncoded()));
}
}
加密和解密代码
@Autowired
private KeyPair keyPair;
@GetMapping("/encrypt")
public String encrypt(String plainText) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
PublicKey publicKey = keyPair.getPublic();
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes());
return Base64.getEncoder().encodeToString(encryptedBytes);
}
@GetMapping("/decrypt")
public String decrypt(String encryptedText) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
PrivateKey privateKey = keyPair.getPrivate();
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] encryptedBytes = Base64.getDecoder().decode(encryptedText);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes);
}
2. 对称
在pom.xml文件中添加以下依赖
<artifactId>spring-boot-starter-security</artifactId>
加密和解密代码
public static SecretKey generateKey() throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
keyGenerator.init(128);
return keyGenerator.generateKey();
}
public static String encode(String plainText, SecretKey secretKey) throws Exception {
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(encryptedBytes);
}
public static String decode(String encryptedText, SecretKey secretKey) throws Exception {
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decodedBytes = Base64.getDecoder().decode(encryptedText);
byte[] decryptedBytes = cipher.doFinal(decodedBytes);
return new String(decryptedBytes, StandardCharsets.UTF_8);
}
public static void main(String[] args) throws Exception {
SecretKey secretKey = generateKey();
String plainText = "Hello, World!";
String encryptedText = encode(plainText, secretKey);
System.out.println("Encrypted text: " + encryptedText);
String decryptedText = decode(encryptedText, secretKey);
System.out.println("Decrypted text: " + decryptedText);
}