Chiffrage et dechiffrage fonction affine

Description

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 decalage.

--> on remarquera egalement que si b=0 alors a sera toujours chiffré "A"

les formules de chiffrement et de dechiffrement sont :

pour crypter C=f(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=f(x)=(a^-1 * (x - b)) mod 26

Source / Exemple :

la source en algorithme vous permettant de traduire dans tout les languages

//la fonction crypeaffine va chercher la postion de la lettre a crypter dans l'alphabet,
//aplique la formule de cryptage
//et retourne la lettre crypter

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 commencant par A=0
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 a une postion donnée
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 postion de la lettre a decrypter dans l'alphabet,
//aplique la formule de decryptage
//et retourne la lettre decrypter

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 decrypter

 
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

Conclusion :

le code en vb6 est dans le zip

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.