DEV Community

Maxime Guilbert
Maxime Guilbert

Posted on • Updated on

Comment chiffrer/déchiffrer des données avec une clé RSA?

Aujourd'hui, beaucoup de données passent par internet et par les infrastructures cloud, par conséquent dès que ces informations deviennent sensibles et/ou privées il faut mettre en place quelque chose pour limiter la visibilité dessus.

C'est pour cela qu'on va voir aujourd'hui comment chiffrer/déchiffrer des données avec une clé RSA.

Qu'est-ce qu'une clé RSA?

Une clé RSA est une paire de clé permettant d'effectuer du chiffrement asymétrique.

Composé d'une clé publique et d'une clé privée, la première est utilisée pour chiffrer des messages qui ne pourront être déchiffrés que par le propriétaire de la deuxième.


Générer une clé

Dans notre exemple d'aujourd'hui, on va voir comment générer une clé RSA en Python, mais vous pouvez regarder l'article suivant où je décris comment le faire depuis un terminal.

Lien article - Comment générer une clé SSH RSA?

Setup

Avant d'effectuer quelconque développement, nous devons installer pycryptodomex

pip install pycryptodomex
Enter fullscreen mode Exit fullscreen mode

Code

from Crypto.PublicKey import RSA 

# Génération de la clé
cle_rsa = RSA.generate(2048) 

# Export des clés publique et privée
cle_privee = cle_rsa.exportKey("PEM") 
cle_publique = cle_rsa.publickey().exportKey("PEM") 

# Écriture des clés dans des fichiers
fd = open("cle_privee.pem", "wb") 
fd.write(cle_privee) 
fd.close() 

fd = open("cle_publique.pem", "wb") 
fd.write(cle_publique) 
fd.close()
Enter fullscreen mode Exit fullscreen mode

Comme vous pouvez le voir, avec la librairie, la génération d'une clé RSA reste très simple.


Chiffrer/déchiffrer des données

Maintenant que l'on a nos clés, il nous est simple de chiffrer et déchiffrer les données, toujours grâce à pycryptodomex.

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

message = b'Ceci est un message de test' 

cle = RSA.import_key(open('cle_publique.pem').read()) 
cipher = PKCS1_OAEP.new(cle) 
ciphertext = cipher.encrypt(message) 
print(ciphertext) 

cle = RSA.import_key(open('cle_privee.pem').read()) 
cipher = PKCS1_OAEP.new(cle) 
message_dechiffre = cipher.decrypt(ciphertext) 

print(message_dechiffre.decode("utf-8"))
Enter fullscreen mode Exit fullscreen mode

Si vous faites votre test, vous devriez voir le message "Ceci est un message de test" chiffré, puis apparaître après le déchiffrement!

Et voilà! C'est aussi simple que ça!

J'espère que ça vous sera utile! 🍺


Vous voulez me supporter?

Buy Me A Coffee

Top comments (0)