2010-08-22 8 views
1

J'ai un test de fonctionnement d'un périphérique matériel qui utilise le cryptage RSA, en Python en utilisant M2Crypto. Maintenant, j'ai besoin de tester un appareil similaire qui utilise le cryptage 3DES. Mais je ne peux pas comprendre comment utiliser M2Crypto pour faire le triple cryptage DES.Comment crypter 3DES en Python à l'aide de l'encapsuleur M2Crypto?

Je sais que cela devrait être possible à partir de this chart. Mais malheureusement, j'ai trouvé est sommaire. (Le homepage à http://chandlerproject.org/ semble être allé, avec Chandler.)

J'ai cherché pour 3DES et « API OpenSSL » et trouvé un peu difficile à grok code C pour déchiffrage qui le fait ressembler je dois utiliser M2Crypto .EVP.Cipher. Mais je n'ai trouvé aucun exemple d'utilisation pour DES. Le plus proche que j'ai trouvé est this blog post on using it for AES encryption. Il semble que j'ai juste besoin de trouver les arguments corrects à M2Crypto.EVP.Cipher.__init__(). Je vais continuer à creuser, mais je pensais que ça valait la peine de poster cette question.

Répondre

0

Le code suivant a fonctionné pour moi:

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

Notez le fichier de clés est un fichier (binaire) 24 octets avec parité définie comme parfois nécessaire pour DES.

Notez également que l'argument iv est (je crois) ignoré lors de l'utilisation « des_ede3_ecb », mais je ne pouvais pas passer None.)

3

Voir here. Il y a une référence pour les chiffrements DES suivants: 'des_ede_ecb', 'des_ede_cbc', 'des_ede_cfb', 'des_ede_ofb', 'des_ede3_ecb', 'des_ede3_cbc', 'des_ede3_cfb', 'des_ede3_ofb'. La page d'accueil semble être here maintenant.

+0

Je ne pensais pas à regarder les tests. Merci! –

+0

Je suppose que http://chandlerproject.org n'était que temporairement en panne. –