Дайте мне 56-символьный ключ в формате base 64.Я должен закодировать эту строку «Terminalid; Order_id; Цена» с TripleDes (ECB, PKCS7) в python3.
Я вхожу в соответствующие модули и дешифровать ключ.Но проблема в длине ключа.
import base64
from Crypto.Cipher import DES3
def encrypt_DES3(terminal_id,order_id,amount):
"""
:param terminal_id: String-for example: EUDuTQrp
:param order_id: integer- for example: 123456
:param amount: integer - for example: 60000
:return: encrypt "terminal_id;oreder_id;integer"
"""
key =base64.b64decode("YTAzZTYyNDNiMTljMzg0YzYxY2NhMGU4NjU1ODc2N2FkYTAwMGJiOQ==")
text = terminal_id + ';' + str(order_id) + ';' + str(amount)
def pad(text):
while len(text) % 8 != 0:
text += '='
return text
plain_text = pad(text)
cipher = DES3.new(key, DES3.MODE_ECB)
my_export = cipher.encrypt(plain_text)
return my_export
У меня проблема с длиной ключа.Спасибо за совет.
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
encrypt_DES3('EUDuTQrp',123456,60000)
File "<pyshell#17>", line 17, in encrypt_DES3
cipher = DES3.new(key, DES3.MODE_ECB)
File "/usr/lib/python3/dist-packages/Crypto/Cipher/DES3.py", line
113, in new
return DES3Cipher(key, *args, **kwargs)
File "/usr/lib/python3/dist-packages/Crypto/Cipher/DES3.py", line
76, in __init__
blockalgo.BlockAlgo.__init__(self, _DES3, key, *args, **kwargs)
File "/usr/lib/python3/dist-packages/Crypto/Cipher/blockalgo.py",
line 141, in __init__
self._cipher = factory.new(key, *args, **kwargs)
ValueError: Invalid key size (must be either 16 or 24 bytes long)