AES加解密 java
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class AESUtil {
private static final String AES = "AES";
private static final String AES_CBC_PKCS5PADDING = "AES/CBC/PKCS5PADDING";
// 这里为了示例简单,使用固定的key和IV,实际应用中需要安全生成和存储
private static final String KEY = "1234567890abcdef"; // 必须是16位
private static final String IV = "abcdef1234567890"; // 必须是16位
// 加密
public static String encrypt(String data) throws Exception {
Cipher cipher = Cipher.getInstance(AES_CBC_PKCS5PADDING);
SecretKeySpec keySpec = new SecretKeySpec(KEY.getBytes(), AES);
IvParameterSpec ivSpec = new IvParameterSpec(IV.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, keySpec, ivSpec);
byte[] encryptedData = cipher.doFinal(data.getBytes());
return Base64.getEncoder().encodeToString(encryptedData);
}
// 解密
public static String decrypt(String encryptedData) throws Exception {
Cipher cipher = Cipher.getInstance(AES_CBC_PKCS5PADDING);
SecretKeySpec keySpec = new SecretKeySpec(KEY.getBytes(), AES);
IvParameterSpec ivSpec = new IvParameterSpec(IV.getBytes());
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);
byte[] original = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
return new String(original);
}
public static void main(String[] args) {
try {
String original = "Hello, World!";
String encrypted = encrypt(original);
System.out.println("Encrypted: " + encrypted);
String decrypted = decrypt(encrypted);
System.out.println("Decrypted: " + decrypted);
} catch (Exception e) {
e.printStackTrace();
}
}
}
7239



被折叠的 条评论
为什么被折叠?



