利用Java函数实现AES加解密算法
发布时间:2023-08-18 16:01:03
在Java中,可以使用javax.crypto包中的Cipher类实现AES加解密算法。下面我会给出一种简单的实现方式,供参考。
首先,需要导入javax.crypto包中的相关类:
import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec;
然后,定义一个加密函数,用于将明文进行加密:
public static byte[] encrypt(String plainText, String encryptionKey) throws Exception {
// 创建AES加密算法实例
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
// 创建AES密钥对象
SecretKeySpec key = new SecretKeySpec(encryptionKey.getBytes("UTF-8"), "AES");
// 初始化加密算法实例
cipher.init(Cipher.ENCRYPT_MODE, key);
// 执行加密操作
return cipher.doFinal(plainText.getBytes("UTF-8"));
}
接下来,定义一个解密函数,用于将密文进行解密:
public static String decrypt(byte[] cipherText, String encryptionKey) throws Exception{
// 创建AES解密算法实例
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
// 创建AES密钥对象
SecretKeySpec key = new SecretKeySpec(encryptionKey.getBytes("UTF-8"), "AES");
// 初始化解密算法实例
cipher.init(Cipher.DECRYPT_MODE, key);
// 执行解密操作
byte[] plainTextBytes = cipher.doFinal(cipherText);
// 将解密结果转换为字符串
return new String(plainTextBytes, "UTF-8");
}
最后,可以编写一个测试函数来测试加解密算法的功能:
public static void main(String[] args) {
try {
// 定义明文和密钥
String plainText = "Hello, world!";
String encryptionKey = "AESKEY1234567890";
// 加密明文
byte[] cipherText = encrypt(plainText, encryptionKey);
// 将密文转换为十六进制字符串输出
System.out.println("Cipher text: " + bytesToHexString(cipherText));
// 解密密文
String decryptedText = decrypt(cipherText, encryptionKey);
// 输出解密结果
System.out.println("Decrypted text: " + decryptedText);
} catch (Exception e) {
e.printStackTrace();
}
}
以上就是一个简单的使用Java函数实现AES加解密算法的示例。注意,实际使用中需要保证密钥的安全性,避免泄露。
