RSA avec Python – TE n 657

publicité
3OS PM – 29 janvier 2015
RSA avec Python –
Nom : . . . . . . . . . . . . . . . . . . . . . . . .
TE n◦ 657
Exercice 1 (5 points)
Soit la fonction proc ci-dessous.
1 def proc(a, b):
2
x, xx = 1, 0
3
y, yy = 0, 1
4
while b != 0:
5
q = a // b
6
a, b = b, a % b
7
xx, x = x - q * xx, xx
8
yy, y = y - q * yy, yy
9
return (a, x, y)
a) Expliquer ce que fait cette fonction.
b) Expliquer en détail le rôle de la ligne no 7.
c) A la ligne 9, que vaut a par rapport à x et y ?
Exercice 2 (5 points)
Créer un fichier Python nommé Nom_Ex2.py qui permet de décomposer un entier naturel
non nul n comme une somme de puissances de 2.
Par exemple, le fichier pourrait afficher à la console :
100 = 4 + 32 + 64
357 = 1 + 4 + 32 + 64 + 256
2015 = 1 + 2 + 4 + 8 + 16 + 64 + 128 + 256 + 512 + 1024
sv – Gymnase de Burier
1
3OS PM – 29 janvier 2015
Nom : . . . . . . . . . . . . . . . . . . . . . . . .
Exercice 3 (6 points)
Le fichier Ex3.txt contient deux nombres premiers p et q.
On choisit e = 5 qui satisfait la condition gcd(e, ϕ(n)) = 1, où n = p · q. On dispose ainsi
d’une clé publique (n, e).
a) Dans un fichier Nom_Ex3.py, construire la clé privée (n, d). Afficher à la console
la valeur de d.
b) Coder le message suivant (présent dans Ex3.txt) à l’aide de la clé publique (n, e)
et l’afficher à la console.
1212121212121212121212121212121212121212121212121212121212
c) Décoder le message suivant (présent dans Ex3.txt) à l’aide de la clé privée (n, d)et
l’afficher à la console.
552286272664186788564631857984700455907472476279585940597060
910032345859983744925615546127492663685334316976853156087392
492286054148756451673574970807904348821305159693448433784514
720609801829221010443718208244525608679557226563996106232420
213674414386740893281348305724265811795219709375
Exercice 4 (6 points)
Le chiffrement d’un message m est possible à partir de la clé publique (n, e).
Voici une fonction codage_rsa qui permet de chiffrer un message m.
1 def codage_rsa(m, n, e):
2
return pow(m, e, n)
Le déchiffrement d’un message chiffré x est possible à l’aide de la clé privée (n, d).
Voici une fonction decodage_rsa qui permet de déchiffrer un message x.
1 def decodage_rsa(x, n, d):
2
return pow(x, d, n)
Le fichier Nom_Ex4.py contient ces deux fonctions, deux nombres premiers p et q ainsi
que la valeur de e.
Le fichier Nom_Ex4.py contient également un message m et un message codé x.
En utilisant les fonctions codage_rsa et decodage_rsa qui remplacent l’exponentiation
modulaire présente dans les différents codes, compléter le fichier Nom_Ex4.py pour :
a) Déterminer la valeur de d, puis afficher sa valeur à la console.
b) Coder le message m à l’aide de la clé publique (n, e) et afficher ce message codé à
la console.
c) Décoder le message codé x à l’aide de la clé privée (n, d) et afficher ce message
décodé à la console.
sv – Gymnase de Burier
2
Téléchargement