我目前在php中有一个3des(des ede cbc)的加密和解密,如下所示:
php > $key = '0000000000000000';
php > $iv = '00000000';
php > $plaintext = '1234567812345678';
php > $ciphertext = openssl_encrypt($plaintext, 'des-ede-cbc', $key, 0, $iv);
php > echo $ciphertext;
LEvEJf9CI+5VTVNeIjARNamKH+PNTx2P
php > $plaintext = openssl_decrypt($ciphertext, 'des-ede-cbc', $key, 0, $iv);
php > echo $plaintext;
1234567812345678
我需要能够接受密文并用python解密。我最近发现的是pycrypto:https://gist.github.com/komuw/83ddf9b4ae8f995f15af
我的尝试:
>>> key = '0000000000000000'
>>> iv = '00000000'
>>> cipher_decrypt = DES3.new(key, DES3.MODE_CBC, iv)
>>> plaintext = cipher_decrypt.decrypt('LEvEJf9CI+5VTVNeIjARNamKH+PNTx2P')
>>> plaintext
b']v\xdf\xa7\xf7\xc0()\x08\xdf\xcb`4\xa7\x10\x9e\xaf\x8c\xb6\x00+_\xb3?2\x1d\\\x08\x01\xfa\xf2\x99'
我不知道有什么不同。CBC模式是3des。我不太清楚ede部分是什么意思,但我似乎找不到任何东西来模拟那种精确的openssl模式。
版本信息:
蟒蛇3.6.5
菲律宾比索7.1.3
最佳答案
从php得到的字符串是base64编码的。
from Crypto.Cipher import DES3
from base64 import decodebytes
key = b'0000000000000000'
iv = b'00000000'
cipher_decrypt = DES3.new(key, DES3.MODE_CBC, iv)
plaintext = cipher_decrypt.decrypt(decodebytes(b'LEvEJf9CI+5VTVNeIjARNamKH+PNTx2P'))
print(plaintext.decode("utf-8"))
>>>1234567812345678
关于php - Python des-ede-cbc等效文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49679035/