我正在尝试解密以前用python加密过的数据,但不能。
我在python中使用以下代码对数据进行加密:
iv = Random.new().read( AES.block_size )
cipher = AES.new(secret_key,AES.MODE_CBC, iv)
encrypdata = base64.b64encode(iv + cipher.encrypt(data))
我在python中使用以下代码对其进行解密:
enc = base64.b64decode(encrypdata)
iv = enc[:16]
cipher = AES.new(secret_key, AES.MODE_CBC, iv )
decryptdata = cipher.decrypt( enc[16:] ).strip()
但是当我用打字稿尝试时,它失败了:
enc = Buffer.from(encrypdata, 'base64').toString();
iv = enc.toString().slice(0,16);
cipher = crypto.createDecipheriv("aes-256-cbc",secret_key, iv );
decryptdata = cipher.update( enc.slice(16) ).strip();
我当前收到的错误是“无效的IV长度”,但是iv的长度是16。
有人可以告诉我如何做到这一点吗? 谢谢。
答案 0 :(得分:0)
通过以下配置,我能够解密数据:
enc = Buffer.from(datos, 'base64');
iv = enc.slice(0, 16);
crypt = enc.toString('base64', 16);
decipher = crypto.createDecipheriv('aes-128-cbc', secret_key, iv);
decipher.setAutoPadding(false);
dec = decipher.update(crypt,'base64','utf-8');
dec += decipher.final('utf-8');