DEV Community

Maxime Guilbert
Maxime Guilbert

Posted on • Edited on

5 3 2 1 1

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

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay