【发布时间】:2017-12-18 22:46:43
【问题描述】:
如何将其转换为 Python?我很困惑的是随机vi。
PHP
public function fnEncrypt($sValue, $sSecretKey)
{
$sValue = $this->pkcs5_pad($sValue, mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, 'ecb'));
return rtrim(
base64_encode(
mcrypt_encrypt(
MCRYPT_RIJNDAEL_128,
$sSecretKey, $sValue,
MCRYPT_MODE_ECB,
mcrypt_create_iv(
mcrypt_get_iv_size(
MCRYPT_RIJNDAEL_128,
MCRYPT_MODE_ECB
),
MCRYPT_RAND)
)
), "\0"
);
}
更新:
这完全按照它应该的方式工作!
Python
secret_key = 'he21jodkio1289ij'
value = 'hello'
BLOCK_SIZE = 16
pad = lambda s: s + (BLOCK_SIZE - len(s) % BLOCK_SIZE) * PADDING
PADDING = '\0'
EncodeAES = lambda c, s: base64.b64encode(c.encrypt(pad(s)))
cipher = AES.new(secret_key, AES.MODE_ECB)
【问题讨论】:
-
嗯……这当然行不通。你的 Python 代码使用了完全不同的密码!
-
还有不同的模式和不同的填充。