Chiffrage et dechiffrage fonction affine

Soyez le premier à donner votre avis sur cette source.

Vue 12 807 fois - Téléchargée 717 fois

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

Ajouter un commentaire

Commentaires

Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
5 -
Salut,
attention, dans ta description tu définis deux fois la fonction f(x). Il serait bon d'aller la fonction de déchiffrage f(x)^(-1). Bon ... c'est pas joli en ascii, donc tu peux aussi l'appeller f'(x) ou g(x).

Et on dit bien chiffrer/déchiffrer et pas crypter.

Cordialement, Bacterius !
tresorsdevie
Messages postés
135
Date d'inscription
lundi 17 juin 2002
Statut
Membre
Dernière intervention
20 juillet 2013
-
merci pour tes precisions!
anwar666
Messages postés
24
Date d'inscription
jeudi 21 février 2008
Statut
Membre
Dernière intervention
12 juillet 2010
-
bonjour !!!
je trouve que c'est très interessent votre exemple de cryptage et decryptage ,
mais j'aimerai si t'en a un exemple en VB.net
merci !
tresorsdevie
Messages postés
135
Date d'inscription
lundi 17 juin 2002
Statut
Membre
Dernière intervention
20 juillet 2013
-
salut,
il te suffit de refaire la fenetre form1 et de copier/coller le code de la form1 sur ta fenetre de vb.net le code est compatible sans aucun probleme

sinon tu ouvre vb.net et tu fait projet ouvrir et tu va chercher le projet vb6 et vb.net va te proposer une migration, tu accepte et le tour est joué

mais pourquoi n'essayerais tu pas de le refaire sous .net directement...
tresorsdevie
Messages postés
135
Date d'inscription
lundi 17 juin 2002
Statut
Membre
Dernière intervention
20 juillet 2013
-
surtout que je donne l'algorithm donc retranscription facile dans le langage de ton choix.

je regrette qu'en france trop peu de programmeur passe par les algorithmes...

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.