Как зашифровать 3DES в Python с помощью оболочки M2Crypto? - PullRequest
1 голос
/ 22 августа 2010

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

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

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

Ответы [ 2 ]

3 голосов
/ 23 августа 2010

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

Домашняя страница сейчас выглядит как .

0 голосов
/ 24 августа 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.)

...