我需要这个函数的 Python 实现 - 我想在 appengine 上使用它。
我不太擅长 Python,所以请帮忙。
function encrypt($data) {
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256 ,'oqufXQ(?bc=6_hR2I3sMZChDpb6dDlw4', $data , MCRYPT_MODE_CBC, utf8_encode('fOaiIOkD8*9Xeu_s4_bb87Ox_UG+D9GA')));
}
Run Code Online (Sandbox Code Playgroud) 这里的情况我有一个PHP脚本使用aes256,CBC密钥和IV大小都是32字节长
data= '123456789abcdef'
from Crypto.Cipher import AES
a = AES.new('oqufXQ(?bc=6_hR2I3sMZChDpb6dDlw4',2,'fOaiIOkD8*9Xeu_s4_bb87Ox_UG+D9GA')
print a.encrypt(data)
Run Code Online (Sandbox Code Playgroud)
和我得到的错误
<type 'exceptions.ValueError'>: IV must be 16 bytes long
Traceback (most recent call last):
File "/base/data/home/apps/s~xxxxxxx/1.155074369696961822/main.py", line 4, in <module>
Run Code Online (Sandbox Code Playgroud)
php代码有效
echo base64_encode(encrypt('0123456789abcdef')) ;
function encrypt($data)
{
return mcrypt_encrypt(MCRYPT_RIJNDAEL_256 ,'oqufXQ(?bc=6_hR2I3sMZChDpb6dDlw4', $data , MCRYPT_MODE_CBC, utf8_encode('fOaiIOkD8*9Xeu_s4_bb87Ox_UG+D9GA') );
}
Run Code Online (Sandbox Code Playgroud)
我不能改变IV大小
请注意,我不太熟悉Python,只需要一种加密数据的方法,因为它将是一个引擎.