js前端加密java后端解密代码
时间: 2023-09-02 18:15:02 浏览: 121
以下是一个使用AES对称加密算法的示例代码:
前端加密代码:
```javascript
// 加密函数
function encryptData(data, key) {
const iv = CryptoJS.lib.WordArray.random(16);
const encrypted = CryptoJS.AES.encrypt(data, key, { iv });
// 将iv转换成字符串,并且和加密后的数据一起返回
return iv.toString() + encrypted.toString();
}
// 示例
const data = '要加密的数据';
const key = '密钥';
const encryptedData = encryptData(data, key);
console.log(encryptedData);
```
后端解密代码:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
// 解密函数
public static String decryptData(String encryptedData, String key) throws Exception {
// 将iv和加密后的数据分离
String ivString = encryptedData.substring(0, 32);
String encryptedString = encryptedData.substring(32);
// 将iv字符串转换成字节数组
byte[] iv = ivString.getBytes("UTF-8");
// 将密钥字符串转换成字节数组
byte[] keyBytes = key.getBytes("UTF-8");
// 创建SecretKeySpec对象
SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, "AES");
// 创建Cipher对象
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
// 创建IvParameterSpec对象
IvParameterSpec ivSpec = new IvParameterSpec(iv);
// 初始化Cipher对象
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivSpec);
// 解密数据
byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(encryptedString));
// 将解密后的字节数组转换成字符串
return new String(decrypted, "UTF-8");
}
// 示例
String encryptedData = "JjwM2FZDxYlGvVvr3V+bw8yQK5z1zFhQoYFJbbS9ZqQ=";
String key = "密钥";
String decryptedData = decryptData(encryptedData, key);
System.out.println(decryptedData);
```
需要注意的是,这只是一个示例代码,实际使用时还需要根据具体情况进行调整。
阅读全文