2013-10-09 1 views
1

J'essaie de crypter un fichier en utilisant OpenPGP en python via l'application pycrypto. J'ai suivi l'exemple fourni dans leur code ici: https://github.com/dlitz/pycrypto/blob/master/lib/Crypto/Cipher/CAST.pyChiffrement Pycrypto OpenPGP: Pourquoi y a-t-il une limite de 16 octets à la clé, quelle partie de la clé dois-je fournir pour atteindre 16 octets?

Donc j'utilise mode.openPGP, mais je n'arrive pas à crypter quoi que ce soit en utilisant une clé publique. Ma clé publique est bien au-dessus de la limite de 16 octets qu'ils spécifient (et toute génération que j'ai vu est aussi au-dessus de cette limite). Y a-t-il une valeur différente que je suis censé utiliser ici, comme l'identifiant d'empreinte digitale? J'essaie de lire le contenu d'un fichier, de le chiffrer avec une clé, puis de l'imprimer dans un nouveau fichier à envoyer (les deux seront supprimés plus tard). Mon code est le suivant:

iv = CryptoRandom.new().read(CAST.block_size) 
cipher = CAST.new(public_key, CAST.MODE_OPENPGP, iv) 
file = open(filename) 
contents = ''.join(file.readlines()) 
encrypted_contents = cipher.encrypt(contents) 
encrypted_filename = filename.replace('/tmp/', '/tmp/encrypted') 
encrypted_filename = encrypted_filename.replace('.csv', '.asc') 
encrypted_file = open(encrypted_filename, 'w') 
encrypted_file.write(encrypted_contents) 
return encrypted_filename 

Répondre

0

Je pense que vous pouvez avoir de nombreux malentendus l'algorithme que vous utilisez ici. CAST est un algorithme à clé symétrique, mais bien que cette implémentation ait un "mode OpenPGP", cela ne signifie pas que vous lui passiez simplement votre clé publique.

Vous devez générer une clé unique de 16 octets et la transmettre à CAST.new(). Vous crypteriez alors généralement cette clé générée aléatoirement en utilisant la clé publique, et stocker/transmettre le texte chiffré, et la clé aléatoire chiffrée ensemble. Le processus de décryptage décrypte la clé aléatoire à l'aide de la clé privée, puis utilise la clé aléatoire décryptée pour déchiffrer le texte chiffré.

+0

Ahh c'est logique, mais comment puis-je crypter quelque chose avec la clé publique alors, je vais courir dans la même erreur. J'essaie actuellement d'utiliser une clé PGP générée par RSA et d'utiliser le fichier de clé publique RSA dans pycrypto pour le charger, mais il ne cesse de me dire que c'est "pas une structure DER" lors de l'importation de la clé. Je suis vraiment perdu ici je pense ... – user1686149

+0

@ user1686149 Je suggère de poser une question distincte concernant les problèmes de cryptage RSA que vous rencontrez, en étant sûr de publier le code que vous utilisez. – Iridium

+0

Fera. Merci pour l'aide. – user1686149

Questions connexes