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
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()
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"))
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! 🍺
Top comments (0)