Académique Documents
Professionnel Documents
Culture Documents
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
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 ?
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é
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