Crypter avec une fonction affine

Présentation
Le chiffrage affine utilise une fonction affine du type y = (ax + b) pour crypter des données; a et b sont des constantes que l’on nommera ici CleA et CleB et ou x et y sont des nombres correspondant aux lettres de l’alphabet en sachant que A=0, B=1, C=2…

On remarquera que si a=1, on se retrouve avec le chiffre de César et par conséquence « b » sera le décalage.
On remarquera également que si b=0 alors « a » sera toujours chiffré « A »

Les formules de chiffrement et de déchiffrement sont :
pour crypter : C=c(x)= (ax + b) mod 26 ‘on travaille avec un modulo 26 pour que la lettre chiffré soit un nombre entre 0 et 25
pour décrypter : D=d(x)=(a^-1 * (x – b)) mod 26
Nos ressources disponibles
La fonction crypeaffine va chercher la position de la lettre à crypter dans l’alphabet,
applique la formule de cryptage et retourne la lettre cryptée

Code : Sélectionner tout
1
2
3
4
5
6
7
8
 
Fonction crypeaffine (Entrée lettre : chaine; Entrée CleA : entier; _ 
Entrée CleB : entier; Sortie crypteaffine : chaine) 
ENTIER X 
X :=posalph(lettre) 
X :=((CleA * X) + CleB ) Mod 26 
crypteaffine := posnum(X) 
Fin fonction


posalpha est une fonction qui retourne la position de la lettre dans l’alphabet en commençant par A=0

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
Fonction Posalpha (Entrée lettre : chaine; Sortie Posalpha : entier) 
CHAINE alpha, tempo 
alpha := "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
  
pour i allant de 0 à longueur(alpha) 
  tempo=alpha[i] 
  si lettre = tempo alors 
      Posalpha=i 
      sort de pour 
  Fin de si 
prochain i 
  
fin fonction


posnum est une fonction qui retourne la lettre de l’alphabet par rapport à une postion donnée

Code : Sélectionner tout
1
2
3
4
5
6
7
Fonction Posnum (Entrée position : entier; Sortie Posnum : chaine) 
CHAINE alpha 
alpha := "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
  
Posnum=alpha[position] -1 // A=0 
  
fin fonction

La fonction decrypeaffine va chercher la position de la lettre à décrypter dans l’alphabet,
applique la formule de décryptage et retourne la lettre décryptée


Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
fonction decrypteaffine (Entrée lettre : chaine; _ 
Entrée CleA : entier; Entrée CleB : entier; Sortie decrypteaffine : chaine) 
  
ENTIER X 
  
InvA=InvA(CleA) 
X :=posalph(lettre) 
X :=(InvA * (x - CleB)) Mod 26 
decrypteaffine := posnum(X) 
  
fin fonction


Cette fonction retourne l’inverse de CleA obligatoire pour pouvoir décrypter

Code : Sélectionner tout
1
2
3
4
5
6
7
8
fonction InvA (Entrée CleA : entier, Sortie InvA : entier 
pour i allant de 1 à 26 
   si (CleA * i ) mod 26 = 1 alors 
      InvA=I 
   sort de pour 
   fin de si 
fin de pour 
fin fonction
Téléchargement
Compatibilité
Windows
0  0 
Détails
Catégories : Algorithmes de cryptage
Éditeur : selkis (tresorsdevie)   +
Licence : Freeware
Date de mise en ligne : 18 avril 2019
Developpez.com décline toute responsabilité quant à l'utilisation des différents éléments téléchargés.
Contacter le responsable de la rubrique Débuter - Algorithmique

Partenaire : Hébergement Web