Implémentation de l'algorithme RSA à l'aide de Python
Cet article explique ce qu'est réellement l'algorithme RSA en cryptographie et montre comment implémenter l'algorithme RSA pour le chiffrement et le déchiffrement des données à l'aide de Python. Ici, les données font référence à des nombres. Vous pouvez également utiliser des données de chaîne pour le chiffrement et le déchiffrement à l'aide de cet algorithme.
L'algorithme RSA est une méthode largement utilisée pour chiffrer et déchiffrer les messages. Il porte le nom de ses créateurs, Ron Rivest , Adi Shamir et Leonard Adleman , qui l'ont développé en 1977 . L'algorithme RSA est basé sur la difficulté de factoriser de grands nombres, et il est largement considéré comme une méthode sécurisée pour chiffrer les données.
Pour comprendre le fonctionnement de l'algorithme RSA, nous devons d'abord comprendre le concept de clés publiques et privées. Dans l'algorithme RSA, chaque utilisateur possède une paire de clés : une clé publique et une clé privée. La clé publique est mise à la disposition de toute personne souhaitant envoyer un message à l'utilisateur, et elle est utilisée pour chiffrer le message. La clé privée est gardée secrète et est utilisée pour déchiffrer le message.
Voici un exemple du fonctionnement de l'algorithme RSA :
- Disons que Gwen veut envoyer un message à Peter. Elle recherche la clé publique de Peter et l'utilise pour chiffrer le message.
- Le message crypté est envoyé à Peter.
- Peter utilise sa clé privée pour déchiffrer le message et le lire.
Voici comment cela fonctionne plus en détail :
- Tout d'abord, Gwen et Peter s'accordent sur deux grands nombres premiers, p et q.
- Ils utilisent ces nombres premiers pour calculer un troisième nombre, n, qui est le produit de p et q. Ce numéro est rendu public.
- Ils calculent également un quatrième nombre, appelé "totient", qui est le nombre d'entiers positifs inférieurs à n qui sont premiers avec n. Ce numéro est également rendu public.
- Gwen et Peter génèrent chacun une clé secrète, appelée « clé privée ». Cette clé est un nombre inférieur au totient et coprime au totient.
- Ils utilisent ensuite leur clé privée pour calculer leur clé publique, qui est un nombre relativement premier par rapport au totient. Cette clé publique est mise à la disposition de toute personne souhaitant envoyer un message à l'utilisateur.
L'algorithme RSA présente plusieurs avantages. Il est relativement simple à mettre en œuvre, et il est largement utilisé car il est considéré comme une méthode sécurisée de chiffrement des données. De plus, l'algorithme RSA est un algorithme à "clé publique", ce qui signifie que les clés utilisées pour le chiffrement et le déchiffrement sont différentes. Cela permet aux utilisateurs de communiquer sans avoir à échanger de clés secrètes.
En résumé, l'algorithme RSA est une méthode largement utilisée pour chiffrer et déchiffrer les messages. Il est basé sur la difficulté de factoriser de grands nombres et il est considéré comme une méthode sécurisée pour chiffrer les données. Il présente plusieurs avantages, dont sa simplicité et son utilisation de clés publiques et privées.
L'ensemble de l'algorithme RSA en mots simples,
- Sélectionnez p , q ( p et q premiers et p non égaux à q )
- Calculer n = p * q
- Calculer totient, t = (p -1) * (q - 1)
- Sélectionnez e en utilisant pgcd(t, e) = 1 où 1 < e < t
- Calculer d en utilisant (d * e % t = 1)
- Considérez e comme clé publique et d comme clé privée.
- Pour le chiffrement, Cipher Text = (Message ^ e) % n (où, Message < n)
- Pour le déchiffrement, Message = (Cipher Text ^ d) % n
from math import gcd
# defining a function to perform RSA approch
def RSA(p: int, q: int, message: int):
# calculating n
n = p * q
# calculating totient, t
t = (p - 1) * (q - 1)
# selecting public key, e
for i in range(2, t):
if gcd(i, t) == 1:
e = i
break
# selecting private key, d
j = 0
while True:
if (j * e) % t == 1:
d = j
break
j += 1
# performing encryption
ct = (message ** e) % n
print(f"Encrypted message is {ct}")
# performing decryption
mes = (ct ** d) % n
print(f"Decrypted message is {mes}")
# Testcase - 1
RSA(p=53, q=59, message=89)
# Testcase - 2
RSA(p=3, q=7, message=12)
Encrypted message is 1394
Decrypted message is 89
Encrypted message is 3
Decrypted message is 12
Si vous le trouvez utile, partagez-le avec vos amis et n'oubliez pas de le suivre.
A bientôt sur un autre blog d'ici là bye
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































