如何修复';无效的密文大小';Javascript中的错误?(aes)

如何修复';无效的密文大小';Javascript中的错误?(aes),javascript,html,encryption,vue.js,aes,Javascript,Html,Encryption,Vue.js,Aes,我正在尝试使用密钥和AES-JS库解密数据。 每当我输入一个16字节的密钥时,就会出现以下错误: 错误:“无效的密文大小(必须为16字节)” 我已尝试将密钥更改为非16字节值,但出现以下错误: 错误:“密钥大小无效(必须为16、24或32字节)” 以下是我目前的代码: export const getEventBlockData = (cm, eventBlockData) => { const encryptedBlockBuf = Buffer.from(eventBlockDat

我正在尝试使用密钥和AES-JS库解密数据。 每当我输入一个16字节的密钥时,就会出现以下错误:

错误:“无效的密文大小(必须为16字节)”

我已尝试将密钥更改为非16字节值,但出现以下错误:

错误:“密钥大小无效(必须为16、24或32字节)”

以下是我目前的代码:

export const getEventBlockData = (cm, eventBlockData) => {
  const encryptedBlockBuf = Buffer.from(eventBlockData, 'base64');
  const aes = new aesjs.AES(aesjs.utils.utf8.toBytes('1111111111111111'));
  const decryptedBlockBuffer = new Buffer(aes.decrypt(encryptedBlockBuf));
};
生成错误的部分是带有
aes.decrypt(…

注意:cm var应该是密钥,但出于测试目的,我将其替换为字符串“1111111111111”,eventBlockData是我试图解密的缓冲区,其形式如下:

Event Block Data :{"type":"Buffer","data":[49,56,53,50,55,51,53,49,50,50,48,48,48,49,48,48,48,48,49]} cm-service.js:61
Encrypted Block buff :{"type":"Buffer","data":[49,56,53,50,55,51,53,49,50,50,48,48,48,49,48,48,48,48,49]}

谢谢您的时间!:)

事实上,错误显示
密文大小无效(必须为16字节)
,因此问题不在于
,更改
长度,就像您在帖子中所说的那样,不会解决问题,因为它与键无关

这是一种常见且已知的,与有关,当您使用长度不是16字节倍数的密码文本时,会发生这种情况


要解决这个问题,您需要为加密文本添加一个,有关更多详细信息,您可以阅读

谢谢您的回答,我已经阅读了填充wikipedia页面,但我仍然不知道如何做。如果我理解正确,我需要向缓冲区添加字节:“加密块buff:{”type:“buffer”,“data:[2152061182391261172119109,52211,93,52211,77]}”,以便使其为16的倍数。但我不知道从哪里开始,也不知道字节使用哪种模式。谢谢:)@Quentin_otd很抱歉,我对这一问题没有更好的了解,我在用Java写这篇文章时遇到了同样的问题,我试图根据我读到的几篇文章给出答案。不是真的。任何有效的AES-CBC密文的长度都是16字节的倍数。因此他的密文在某种程度上被破坏了。这与填充无关。