后端的解码方法是这样的,我在前端用crypto-js应该怎么设置参数?
// 解密模式/补码方式,固定值,不允许修改
String CIPHER_MODEL = "/CBC/NoPadding";
// 解密算法,固定值,不允许修改
String keyAlgorithm = "AES";
// 密钥,从医院获取
String key = "M4pe91TNP39MvGmDNNgq7w==";
// 待解密内容
String content = "a5KxFJpwuQlH5EOZeIBZteWKCflCykxfzj5ZIUtlOYI=";
// 将密钥进行base64解密
byte[] keys = Base64.getDecoder().decode(key);
// 转base64字节码
byte[] contentBytes = Base64.getDecoder().decode(content);
// 按照 算法/模式/补码方式 构建Cipher对象
Cipher cipher = Cipher.getInstance(keyAlgorithm + CIPHER_MODEL);
// 生成密匙
SecretKeySpec keyspec = new SecretKeySpec(key, keyAlgorithm);
// 构建偏移量,使用密钥作为偏移量
IvParameterSpec ivspec = new IvParameterSpec(key);
// 用密钥和一组算法参数初始化此 Cipher
// Cipher.ENCRYPT_MODE用于将 Cipher 初始化为解密模式的常量
cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
// 将密文进行解密,得到解密后数据
byte[] result= cipher.doFinal(content);
// decodeContent 为最终解密后的内容
String decodeContent = new String(result, Charset.forName("utf-8")).trim();
下面是我写的,但我知道有些参数是不对的,有懂的吗?
import CryptoJS from 'crypto-js'
import { Base64 } from 'js-base64';
//加密
function encryption(data,iv,key){
let keyOk=CryptoJS.enc.Utf8.parse(key)
let ivOk=CryptoJS.enc.Utf8.parse(iv)
let encryptedData=CryptoJS.AES.encrypt(data,keyOk,{
iv:ivOk,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
}).toString()
return encryptedData;
}
//解密
function decryption(data,iv,key){
console.log(data,iv,key)
let keyOk=CryptoJS.enc.Utf8.parse(key)
let ivOk=CryptoJS.enc.Utf8.parse(iv)
let dataOk=data
let decryptedData=CryptoJS.AES.decrypt(dataOk,keyOk,{
iv:ivOk,
mode:CryptoJS.mode.CBC,
padding:CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8)
return decryptedData
}
export {
encryption,
decryption
};