解密时遇到问题!请帮助新手!
我尝试了Nodejs decrypt using crypto error wrong final block length和Decrypting AES256 with node.js returns wrong final block length,但对我没有帮助
使用此加密数据
function encrypt(text,encrypt_key){
var cipher = crypto.createCipher('aes-256-cbc',encrypt_key)
var encrypted;
encrypted += cipher.update(text,'utf8','base64');
encrypted += cipher.final('base64');
console.log(typeof encrypted)
return encrypted;
}
并使用来自Node.js的网络模块发送
var key_info = prepareJSONstring('session_key', encrypt(secret_key,encrypt_public_key),0,0);
console.log('Session Key sent: \n', key_info)
conn.write(key_info);
使用以下方式从客户端接收数据
jsonData = JSON.parse(data);
secret_key = jsonData.data;
secret_key = decrypt(secret_key,encrypt_key);
console.log('Received session_key: \n'+ secret_key)
然后使用以下方法解密:
function decrypt(content, decrypt_key){
var decipher = crypto.createDecipher('aes-256-cbc',decrypt_key)
var decrypted;
decrypted += decipher.update(content, 'base64', 'utf8');
decrypted += decipher.final('utf8');
}
这是确切的错误消息。我检查解密功能中输入的类型是否为字符串。如何检查块长?我不知道还要检查什么
internal/crypto/cipher.js:164
const ret = this._handle.final();
^
Error: error:0606506D:digital envelope routines:EVP_DecryptFinal_ex:wrong final block length