Vous êtes sur la page 1sur 3

Codage RSA

Objectif. Créer un des fonctions permettant le codage et le décodage de données en


suivant le protocole RSA.

Prérequis. Visionner les vidéos suivantes :


● Cryptographie à clé publique
● Arithmétique pour RSA
● Chiffrement RSA

Le pdf correspondant se trouve ici.

Contexte.
Bruno veut envoyer un message M à Alice. Grâce à un dictionnaire qu’il partage avec Alice,
il a au préalable transformer son message en liste de nombre. (partie 1)

On considère donc un message M qui est une liste de nombres.


Grâce à la clé publique qu’Alice a fourni à Bruno, il chiffre le message pour obtenir un
message crypté X. (partie 2)

Grâce à la clé privée, Alice est capable de retrouver le message originel M que Bruno lui a
envoyé grâce à une fonction de déchiffrement. (partie 3).

Elle peut alors retrouver un message intelligible en transcrivant le liste de chiffres obtenus
en une chaîne de caractères. (partie 1)
1. Préparation

Dans cette partie, il s’agira de créer des fonctions permettant de transformer une chaîne de
caractères (un message intelligible) en une liste de nombres.

On créera plusieurs fonctions :


● lettre-nombre : fonction qui prend pour paramètre un caractère est qui retourne
un nombre.
Exemples :
○ lettre-nombre(“A”) retourne 0
○ lettre-nombre(“Z”) retourne 25
○ lettre-nombre(“a”) retourne 26
○ lettre-nombre(“ “) retourne 50
On pourra créer un dictionnaire :
Dico={“A”:”0”,”B”:”1”,........

Facultatif : faire figurer les minuscules, les caractères accentués, les caractères de
ponctuations…

● nombre-lettre : fonction qui prend pour paramètre un nombre et qui retourne


une lettre (caractère)
Exemples : nombre-lettre(0) retourne “A”
● chaine-lnb : fonction qui prend pour paramètre une chaîne de caractère et qui
retourne une liste de nombres.
○ chaine-lnb(“ALEA”) retourne [0,11,4,0]
○ chaine-lnb(“alea”) retourne [25,36,29,25]
● lnb-chaine : fonction qui prend pour paramètre une liste de nombres et qui
retourne une chaîne de caractères.
○ chaine-lnb(“ALEA”) retourne [0,11,4,0]
○ chaine-lnb(“alea”) retourne [25,36,29,25]

2. Préparation des clés


Alice prépare une clé publique et une clé privée.
Alice part de deux nombres premiers p et q.
On note n=pq et φ(n)=(p-1)(q-1).

Ne pas hésiter à relire ce document (partie 6) en lien plus haut ou à revoir la vidéo
correspondante.

La clé publique d’Alice est le couple (n,e).


La clé privée est d.

Dans cette partie vous devez créer une clé publique et une clé privée.

3. Codage
Créer une fonction codage qui prend en entrée une liste de nombre (le message M de
Bruno), une clé publique n, e et qui retourne le message crypté X (sous forme de liste de
nombres).

4. Décodage
Créer une fonction décodage qui prend pour paramètre une liste de nombre (le message
crypté X) est qui retourne le message décrypté (sous forme de liste de nombres).

5. Essayer vos programmes

Vous aimerez peut-être aussi