我在使用 AES 加密时遇到问题,使用 PHP 进行加密并使用 Python 进行解密。
为了加密,我使用了这个 PHP 函数:
function cryptpass($arg1) {
$k = '61b4c705859f4158d38090c1e38e8fdc4f3d29db007f012766276aa498835cf6';
$iv = openssl_random_pseudo_bytes(openssl_cipher_iv_length('aes-256-cbc'));
$cipher = base64_encode(openssl_encrypt($arg1,'aes-256-cbc',$k,OPENSSL_RAW_DATA,$iv));
return urlencode(base64_encode('{"cipher":"'.$cipher.'","i":"'.base64_encode($iv).'"}'));
}
我使用这个 Python 代码来解密:
def decryptpass(info):
key = '61b4c705859f4158d38090c1e38e8fdc4f3d29db007f012766276aa498835cf6'
data = json.loads(base64.b64decode(info))
iv = base64.b64decode(data.get('i'))
cipher = AES.new(key,AES.MODE_CBC,iv)
return cipher.decrypt(data.get('cipher'))
但是在运行这段代码时,出现如下错误:
ValueError:AES 密钥的长度必须为 16、24 或 32 个字节
我知道我的密钥有 64 个字节,但 PHP 加密如何使用它?我尝试从密钥中删除最后 32 个字符,但这不起作用。
慕神8447489
相关分类