Python Language Chiffrement asymétrique RSA avec pycrypto


Exemple

Le chiffrement asymétrique présente l'avantage de pouvoir chiffrer un message sans échanger une clé secrète avec le destinataire du message. L'expéditeur doit simplement connaître la clé publique du destinataire, ce qui permet de chiffrer le message de telle sorte que seul le destinataire désigné (qui possède la clé privée correspondante) puisse le déchiffrer. Actuellement, un module tiers tel que pycrypto est requis pour cette fonctionnalité.

from Crypto.Cipher import PKCS1_OAEP
from Crypto.PublicKey import RSA

message = b'This is a very secret message.'

with open('pubkey.pem', 'rb') as f:
    key = RSA.importKey(f.read())
cipher = PKCS1_OAEP.new(key)
encrypted = cipher.encrypt(message)

Le destinataire peut déchiffrer le message s'il dispose de la clé privée appropriée:

with open('privkey.pem', 'rb') as f:
    key = RSA.importKey(f.read())
cipher = PKCS1_OAEP.new(key)
decrypted = cipher.decrypt(encrypted)

Remarque : les exemples ci-dessus utilisent le schéma de chiffrement PKCS # 1 OAEP. pycrypto implémente également le schéma de cryptage PKCS # 1 v1.5, celui-ci n'est cependant pas recommandé pour les nouveaux protocoles en raison de mises en garde connues .