如何使用crypto-js进行AES解密,没有iv密钥偏移量?

AES解密,没有iv怎么使用crypto-js呢

image.png

var CryptoJS = require("crypto-js");


// 定义AES加密解密密钥
const key = CryptoJS.enc.Utf8.parse('1234567_cpzy1234');

// 加密
const plaintext = 'admin';
const ciphertext = CryptoJS.AES.encrypt(plaintext, key, {
  iv: CryptoJS.enc.Utf8.parse('1234567_cpzy1234'), // 初始向量
  mode: CryptoJS.mode.CBC, // 模式
  padding: CryptoJS.pad.Pkcs7 // 填充
}).toString();

console.log('加密',ciphertext);

// 解密
const decrypted = CryptoJS.AES.decrypt(ciphertext, key, {
  iv: CryptoJS.enc.Utf8.parse('1234567_cpzy1234'), // 初始向量
  mode: CryptoJS.mode.CBC, // 模式
  padding: CryptoJS.pad.Pkcs7 // 填充
});

console.log('解密',decrypted.toString(CryptoJS.enc.Utf8)); 

加密串:'z6OGLxa/UGEjSZXfBiPGsA=='
秘钥:'1234567_cpzy1234'
找了一个在线解密的网站,没设置iv密钥偏移量确实可以解,但是用crypto-js不设置iv就会报错,应该怎么用啊。

阅读 3.1k
2 个回答

image.png

你这分组模式一个是 ECB、一个是 CBC,那能对吗?

CBC 一定要 iv,实在就是没有那就填充 16 字节的 0;ECB 不需要 iv。

首先IV 确实是必须的。至于你没有iv 为什么可以解开,纯属你的密钥 key 和 iv 一样, 你将iv 改成别的, 也就解不开了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题