Java函数实现AES加密与解密的方法及应用
发布时间:2023-10-05 11:45:15
AES(Advanced Encryption Standard)是一种对称加密算法,它可以实现对数据的加密和解密。在Java中,可以使用javax.crypto包提供的AES算法类和工具类来实现AES加密与解密。
1. 导入相关包
要使用AES算法,首先需要导入javax.crypto.Cipher和javax.crypto.spec.SecretKeySpec类。
import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec;
2. 定义加密和解密方法
在Java中,可以使用AES算法的ECB模式进行加密和解密。下面是示例代码:
// 加密方法
public static String encrypt(String plainText, String secretKey) {
try {
SecretKeySpec keySpec = new SecretKeySpec(secretKey.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
byte[] encrypted = cipher.doFinal(plainText.getBytes());
return Base64.getEncoder().encodeToString(encrypted);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
// 解密方法
public static String decrypt(String encryptedText, String secretKey) {
try {
SecretKeySpec keySpec = new SecretKeySpec(secretKey.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(encryptedText));
return new String(decrypted);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
3. 使用示例
可以通过调用encrypt方法对需要加密的数据进行加密,并通过调用decrypt方法对加密后的数据进行解密。下面是示例代码:
public static void main(String[] args) {
String plainText = "Hello, world!"; // 需要加密的数据
String secretKey = "abcdef1234567890"; // 密钥
// 加密
String encryptedText = encrypt(plainText, secretKey);
System.out.println("加密后的数据:" + encryptedText);
// 解密
String decryptedText = decrypt(encryptedText, secretKey);
System.out.println("解密后的数据:" + decryptedText);
}
4. 应用场景
AES加密算法广泛应用于数据的安全传输和存储,常见的应用场景有:
- 网络通信加密:在进行网络通信时,使用AES加密算法对数据进行加密,提高传输数据的安全性,防止数据被窃取或篡改。
- 数据库存储加密:在将敏感数据存储到数据库中时,使用AES加密算法对数据进行加密,提高数据的机密性,防止数据泄露。
- 文件保护加密:在将文件存储到本地或云端时,使用AES加密算法对文件进行加密,确保文件内容的机密性,防止文件被恶意读取。
总结:通过上述步骤,可以实现AES加密与解密的方法,并应用于不同的场景中,提高数据的安全性和机密性。
