aes加密算法java前后端
时间: 2025-01-06 22:40:43 浏览: 8
### Java AES 加密算法实现
在Java中实现AES加密算法涉及多个方面,包括但不限于初始化向量(IV),秘钥生成以及实际的加解密过程。下面是一个完整的例子来展示如何创建一个简单的AES工具类[^1]。
```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 ALGORITHM = "AES";
private static final String TRANSFORMATION = "AES/CBC/PKCS5Padding";
/**
* Generate a secret key.
*/
public static SecretKey generateKey(int n) throws Exception {
KeyGenerator keyGen = KeyGenerator.getInstance(ALGORITHM);
keyGen.init(n); // e.g., 128 bits
return keyGen.generateKey();
}
/**
* Encrypt the given data with provided key and IV.
*/
public static byte[] encrypt(String plainText, SecretKey secretKey, IvParameterSpec iv) throws Exception {
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv);
return cipher.doFinal(plainText.getBytes());
}
/**
* Decrypt encrypted data using specified key and IV.
*/
public static String decrypt(byte[] cipherText, SecretKey secretKey, IvParameterSpec iv) throws Exception {
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(Cipher.DECRYPT_MODE, secretKey, iv);
return new String(cipher.doFinal(cipherText));
}
}
```
为了简化前端与后端之间的通信,在传输之前通常会对二进制数据进行Base64编码;接收方收到消息后再做相应的解码操作。
对于前后端集成而言:
- 后端可以利用上述`AesUtil`类完成敏感信息的加密处理;
- 前端则需采用JavaScript或其他支持的语言库来进行对应的加密/解密逻辑匹配,确保双方使用的参数一致(比如相同的key长度、填充模式等)。值得注意的是,由于浏览器环境的安全性考虑,建议仅限于HTTPS协议下执行此类操作,并且尽量减少直接暴露私钥的可能性。
阅读全文