我試圖使用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 –