console.log(字符图案),生成器,字符画

13 篇文章 0 订阅
6 篇文章 0 订阅
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据您提供的加密和解密代码,我发现有一些问题。首先,在加密代码中,您使用了`crypto.randomBytes()`方法生成了一个随机的IV,并将其转换为了一个字符串。但是,在解密代码中,您又使用了`CryptoJS.enc.Base64.parse()`方法将这个字符串转换为了一个WordArray,这样会导致IV不一致,从而无法正确解密。 另外,在解密代码中,您使用了`CryptoJS.enc.Base64.stringify()`方法将解密结果转换为了一个字符串。但是,在加密代码中,您并没有对加密结果进行Base64编码,而是直接将其转换为了一个Buffer,这也会导致解密失败。 为了解决这些问题,您可以按照以下步骤进行修改: 1. 在加密代码中,将IV转换为一个Buffer,并将其一起返回给前端。 ```javascript var iv = crypto.randomBytes(8); // 将 IV 转换为 Buffer 数组 let ivBuffer = Buffer.from(iv); // 创建加密器 let cipher = crypto.createCipheriv("aes-128-cbc", keyBuffer, ivBuffer); // 对数据进行加密 let encryptedData = cipher.update(data, "utf8"); encryptedData = Buffer.concat([encryptedData, cipher.final()]); // 返回加密结果和 IV return { data: encryptedData, iv: ivBuffer.toString("base64"), encryptiontype: 'MD5' }; ``` 2. 在解密代码中,将IV转换为一个WordArray,并使用加密时返回的IV进行解密。 ```javascript var decrypt = (iv, data) => { // 将 IV 转换为 WordArray let ivWordArray = CryptoJS.enc.Base64.parse(iv); try { // 创建解密器 let decrypted = CryptoJS.AES.decrypt({ciphertext: CryptoJS.enc.Base64.parse(data)}, key, { iv: ivWordArray, mode: CryptoJS.mode.CBC }); // 将解密结果转换为字符串,并将结果解析为 JSON 对象 let decryptedStr = decrypted.toString(CryptoJS.enc.Utf8); console.log(decryptedStr); return JSON.parse(decryptedStr); } catch (err) { console.log(err); } }; ``` 这样,您就可以正确地进行加密和解密了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值