Как зашифровать 3DES в Python с помощью оболочки M2Crypto?

У меня есть рабочий тест аппаратного устройства, использующего шифрование RSA, в Python с использованием M2Crypto. Теперь мне нужно протестировать аналогичное устройство, использующее шифрование 3DES. Но я не могу понять, как использовать M2Crypto для тройного шифрования DES.

Я знаю, что это должно быть возможно из этой диаграммы. Но, к сожалению, документация M2Crypto, которую я нашел, отрывочна. (домашняя страница по адресу http://chandlerproject.org/ исчез вместе с Чендлером.)

Я искал 3DES и «OpenSSL API» и нашел сложный код C для расшифровки, который выглядит так, как будто мне нужно использовать M2Crypto.EVP.Cipher. Но я не нашел примеров его использования для DES. Самое близкое, что я нашел, это это сообщение в блоге об использовании его для AES. шифрование. Похоже, мне просто нужно выяснить правильные аргументы для M2Crypto.EVP.Cipher.__init__(). Я буду продолжать копать, но я подумал, что стоит опубликовать этот вопрос.


person Daryl Spitzer    schedule 22.08.2010    source источник


Ответы (2)


См. здесь. Существует ссылка на следующие шифры DES: 'des_ede_ecb', 'des_ede_cbc', 'des_ede_cfb', 'des_ede_ofb', 'des_ede3_ecb', 'des_ede3_cbc', 'des_ede3_cfb', 'des_ede3_ofb'.

Домашняя страница теперь выглядит здесь.

person ohe    schedule 22.08.2010
comment
Не догадался посмотреть тесты. Спасибо! - person Daryl Spitzer; 24.08.2010

У меня работал следующий код:

with open(keyfile, 'rb') as f:
    key = f.read()
encrypt = 1
cipher = Cipher(alg='des_ede3_ecb', key=key, op=encrypt, iv='\0'*16)
ciphertext = cipher.update(plaintext)
ciphertext += cipher.final()

Обратите внимание, что ключевой файл представляет собой 24-байтовый (двоичный) файл с установленным контролем четности, который иногда требуется для DES.

Также обратите внимание, что аргумент iv (как мне кажется) игнорируется при использовании 'des_ede3_ecb', но я не смог передать None.)

person Daryl Spitzer    schedule 23.08.2010