2010-08-22 11 views
1

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

Я знаю, что это должно быть возможно от this chart. Но, к сожалению, the documentation of M2Crypto Я нашел отрывочный. (The homepage в http://chandlerproject.org/, кажется, нет, вместе с Чандлер.)

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

ответ

0

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

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.)

3

См. here. Существует ссылка на следующие 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».

Домашняя страница, похоже, here.

+0

Я не думаю, что смотреть на тестах. Благодаря! –

+0

Я предполагаю, что http://chandlerproject.org был временно отключен. –