简介:本课程深入浅出地讲解了如何使用Java实现AES-128加密算法,涵盖加解密操作、密钥生成及管理等核心内容。
Java AES128加密解密示例源码(AES-ECB-PKCS7Padding)展示了如何在Java程序中使用AES算法进行数据的加解密操作。此代码通常用于需要确保信息安全传输或存储的应用场景,例如用户密码保护、敏感信息处理等。通过这种方式可以有效增强应用的数据安全性。
以下是示例源码:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
public class AESUtil {
private static final String KEY = 128位密钥; // 请确保此处为16个字符长度的字符串,用于生成AES-128加密所需的密钥
public static byte[] encrypt(String content, String password) throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance(AES);
SecureRandom random = new SecureRandom(password.getBytes());
kgen.init(128, random);
SecretKeySpec skeySpec = new SecretKeySpec(password.getBytes(), AES);
Cipher cipher = Cipher.getInstance(AES/ECB/PKCS5Padding);//算法/模式/补码方式
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
byte[] encryptData = cipher.doFinal(content.getBytes());
return encryptData;
}
public static String decrypt(byte[] encryptedData, String password) throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance(AES);
SecureRandom random = new SecureRandom(password.getBytes());
kgen.init(128, random);
SecretKeySpec skeySpec = new SecretKeySpec(password.getBytes(), AES);
Cipher cipher = Cipher.getInstance(AES/ECB/PKCS5Padding);//算法/模式/补码方式
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
byte[] decryptData = cipher.doFinal(encryptedData);
return new String(decryptData);
}
}
```
上述代码段中,`encrypt` 方法用于加密字符串内容,并返回字节数组形式的密文;而 `decrypt` 方法则接收一个由 `encrypt` 生成的密文字节数组和相同的密码进行解密操作并还原成原始文本。使用时需保证加密与解密过程中使用的密码一致,否则无法正确恢复数据。
请注意,在实际项目开发中应避免直接在代码里硬编码密钥,并采取更安全的方式来管理敏感信息如通过环境变量或配置文件等方法传递。