Vous êtes sur la page 1sur 4

M2 Réseaux et Télécommunications

TP Cryptographie et Sécurité Réseaux

TP 1 : Outils mathématiques pour la cryptographie

Objectifs :
 Apprendre à utiliser les fonctions mathématiques en cryptographique;

Remarque:
1. Créer un dossier et le nommer par Tpcrypto_votre_nom.
2. Enregistrer les fonctions crées dans ce dossier.

1- Tests de primalité
Les tests de primalité sont des algorithmes qui permet de décider si un nombre est premier,
consistent à essayer de le diviser par tous les nombres qui n'excèdent pas sa racine carrée : s'il
est divisible par l'un d'entre eux, il est composé, et sinon, il est premier.

Algorithme
Entrée : n
Sortie : prem
Début
d=2
prem=vrais
Tant que (prem = Vrai et d < n) faire
Si Mod (n,d)=0 alors
prem = Faux
Sinon
d = d +1
Finsi
FinTantQue
Fin

Travail demandé:
- Écrire une fonction en Matlab « prem=primalite(n) » qui permet d’indique si un nombre
entier est premier ou non
- Tester votre programme avec les valeurs suivantes: 4528, 2500,13, 31457 ,26511

2- PGCD
Le plus grand commun diviseur ou PGCD de deux nombres entiers non nuls est le plus grand entier
qui les divise simultanément.

Algorithme :PGCD

Entrée : a, b entiers positifs


Sortie : PGCD
Début
tant-que (a ≠b) faire
si (a> b) alors
a=a-b
1
M2 Réseaux et Télécommunications
TP Cryptographie et Sécurité Réseaux

sinon
b=b-a
fin tant-que
pgcd =a
Fin

Travail demandé:
- Écrire une fonction en Matlab «  PGCD-1(a,b) »qui calcule le pgcd de deux nombres entiers (a,b)
- Trouvez le PGCD de ces nombres :4528 et 2500, 520 et 13, 31457 et 26511
- Indiquer si ces nombres sont co-premiers ou non ?

3- L’exponentiation modulaire
L’exponentiation modulaire y=ab mod p. Tout d'abord il faut convertir l'exposant b en notation
binaire
Algorithme binaire
Entrée :b %le nombre en décimal
Sortie : bn%le nombre en binaire
Début
%Initialisation :
q=b
bn(1)= q mod 2;
q=q div 2 ;
i=2;
Tant que ( 0>q ) faire
bn(i)= q mod 2;
q=q div 2 ;
i=i+1;
fin tant que
Retourner bn
Fin

Algorithme expo_mod
Entrée :a, b, p
Sortie : y %le reste de la division de a b sur p
Début
Si ( b =0 ) alors y=1 retourner y
Sinon
Convertir b en binaire (bn)
T=taille de bn
A=a
y=1
Si ( bn(1) =1 ) alors y=a mod p
pour i=2:T faire
A=A^2 mod p
Si (bn(i) =1) alors
y=(A*y) mod p

2
M2 Réseaux et Télécommunications
TP Cryptographie et Sécurité Réseaux

fin si
fin pour
retourner y
Fin

Travail demandé:
 Ecrire une fonction en Matlab y=expo_mod(a,b,p) qui réalise l’exponentiation modulaire.
 Tester votre programme avec les valeurs suivantes a=47854 b= 77 p= 31
 Calculer ab mod p utilisant directement la fonction mod. Que remarquez-vous ?

4- Algorithme d’Euclide étendu


a. PGCD
Algorithme pgcd_Eucl_e
Entrée :a, b (a,b ¿ 0 et a ≥ b)
Sortie :(p, x, y) %p=le pgcd(a,b) et ax+by=p
Début
U=(a, 1, 0)
V=(b,0,1)
Tant que (V (1)≠ 0 ) faire
q=U ( 1 )÷V (1)
T =(U ( 1 ) mod V ( 1 ) , U ( 2 )−qV ( 2 ) , U ( 3 )−qV ( 3 ) )
U =V
V =T
fin tant que
retoutner U
Fin

Travail demandé:
 Ecrire une fonction en Matlab U= pgcd_Eucl_e (a,b)qui calcule le pgcd de deux valeurs
utilisant l’algorithme Euclide étendu.
 Application:(a = 4864 et b = 3458), (a= 1025 et b=5592), (a=119 et b=1155)
 Donner l’expression de l’inverse calculé ainsi que les valeurs numériques pour toutes les
applications données ci-dessus.

b. Inverse de b modulo n
L'algorithme d'Euclide étendu permet de calculer l'inverse de b modulo n s'il existe. Rappelons que
l'inverse modulo n de b est le nombre entier b-1 tel que b·b-1 (mod n) = 1. Par exemple 7 est l'inverse
modulo 9 de 4, car 4·7 (mod 9) = 28 (mod 9) = 1.
Algorithme Euclide_étendu
Entrée : b, n (b, n doit être co-premier)
Sortie : m %le b-1 mod n
Début
U= pgcd_Eucl_e (n,b)
Si (U =[ ]ou U (1 ) ≠ 1 ouU ( 3 ) > m) alors
Ecrire (' b n'a pas d'inverse modulo n')
m=[]

3
M2 Réseaux et Télécommunications
TP Cryptographie et Sécurité Réseaux

Sinon
Si U(3)> 0 alors
m=U(3)+n
sinon
m=U(3)
Fin si
Ecrire (' b-1 mod n = ',m)
Fin si
Fin

Travail demandé

 Ecrire une fonction en Matlab m=eucli_inver_mod(b,n) qui calcule l'inverse de b modulo n


utilisant l'algorithme d'Euclide étendu?
 Application 13-1mod 27 ; 12-1mod 20 ; 11153-1 mod 2256987.

5- La fonction d’Euler:
- Écrire une fonction en Matlab « phi(n)= Eleur(n)» d’un nombre entier n utilisant les
fonctions calculées dans les sections précédentes

Algorithme Euler

Entrée : n
Sortie : phi(n)
Début
Lire(n)
K=0
Phi(0)=0
Phi(1)=1
Si ( n est premier)
Phi(n)=n-1
sinon
Pour i allant de 1 à n-1 faire
Si (n et i sont co-premier) alors
K=k+1
Fin si
Fin pour
Phi(n)=k
Fin

Vous aimerez peut-être aussi