我试图使用NodeJS解密一些数据。在.NET中使用零填充进行AES加密并使用Node.js解密
此数据是用C#和AES-CBC-256算法创建的。 keySize和blockSize是256,填充是ZeroPadding。
我不能”与Node.js的解密,错误的是:
Error: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length
这里是我的javascript代码:
decipher = crypto.createDecipheriv('aes-256-cbc', key, iv.slice(0, 16));
decrypted = decipher.update(encryptedPayloadBuffer, 'base64', 'ascii');
decrypted += decipher.final('ascii');
decipher = null;
return decrypted;
我使用库 “加密”。我在某处读到node.js解密只适用于PKSC7填充。这是真的吗?我不能在C#项目中改变任何东西,我必须在节点端找到解决方案。
你能帮助我吗?
编辑:我试图用这个来禁用autoPadding:
decipher.setAutoPadding(false);
//next line of code:
//decrypted = decipher.update(encryptedPayloadBuffer, 'base64', 'ascii');
但我收到此错误:
Error: error:0606508A:digital envelope routines:EVP_DecryptFinal_ex:data not multiple of block length
如果您的块大小为256位,则不是AES。请明确你正在使用什么。 –
@ ArtjomB。很可能您可以强制执行C#AES实现来执行Rijndael-256,但我不确定。 –
@ArtjomB我相信这是AES。这是实施:https://gist.github.com/VivienAdnot/e9a96fea04bccfa613ec –