我有以下用于解密的Python脚本:
from Crypto.Cipher import AES shared_secret = raw_input('Enter crypted_shared_secret: ').strip() cipher = AES.new(shared_secret.decode('base64'), AES.MODE_ECB) blob = raw_input('Enter crypted_blob: ').strip() plain = cipher.decrypt(blob.decode('base64')) print(plain)
我正在尝试blob使用Node 生成使用该脚本生成原始值的值。这是我的尝试:
blob
const Crypto = require('crypto'); var shared_secret = Crypto.randomBytes(32); var cipher = Crypto.createCipher('aes-256-ecb', shared_secret); crypted_blob = cipher.update(blob, 'utf8', 'base64') + cipher.final('base64');
我只能修改Node.js脚本,但是我不确定它出了什么问题。
仅 在 将共享密钥用于加密 后 ,才需要将其编码为Base64 :
var shared_secret = Crypto.randomBytes(32); var cipher = Crypto.createCipheriv('aes-256-ecb', shared_secret, ""); crypted_blob = cipher.update(blob, 'utf8', 'base64') + cipher.final('base64'); // send `shared_secret.toString('base64')`
其他问题:
crypto.createCipher
Cipher.setAutoPadding(false);
安全注意事项: