introduction
Le mot de passe affine est un mot de passe de remplacement.
Le mot de passe affine est un type de cryptage à table unique.
Danslechiffrementaffiné,lesystèmedelettresdetaillemcorrespondd'abordàunevaleurdanslaplagede0..m-1,puisl'arithmétiquemoduloestutiliséepourconvertirleslettresdufichierd'originedanslefichierchiffrécorrespondantdanslesnombres.Lafonctiondechiffrementd'unelettreuniqueest
De plus, il y a la taille du système de lettres et les valeurs clés du mot de passe. La valeur de a doit être telle que a et soit relativement première.
où l'équation est satisfaite.
L'élément inverse multiplicatif de a n'existe que lorsque a et mar sont relativement premiers.
Désavantages
Becausetheaffinecipherisstillasinglealphabetcipher, itstillretainstheweaknessofthistypeofencryption.Whena = 1, affineencryptionistheCaesarcipher, becausetheencryptionequationcanbesimplifiedtolinearmovement.ConsiderencryptingEnglish. (Ie: m = 26), excluding26andCaesarciphers, thereareatotalof286affineciphers.Thisvalueisduetothefactthat12numbersand26arerelativelyprimeamongnumberslessthan26.Eachvalueofacanhave26mutuallydifferentadditivemoves (thevalueofb) et, par conséquent, thereare12 * 26or312possiblekeyvalues intotal.Becausethepasswordlackscomplexity, accordingtoKirkhoff'sprinciple, thissystemisinsecure.
La principale faiblesse de ce mot de passe est que si un cryptographe peut découvrir (par exemple par analyse de fréquence, craquage par force brute, spéculation ou toute autre méthode) le texte original à deux caractères du document crypté, la valeur clé peut être résolue. Un système d'équations est obtenu.
Lemêmetypedeconversionencryptographieaffineestutilisédanslegénérateurpseudoaléatoirelinéaire,quiestundesgénérateursdenombrespseudoaléatoires.
Exemple
Dans l'exemple de chiffrement et de déchiffrement suivant, les lettres vont de A à Z, et elles ont toutes des valeurs correspondantes dans le tableau.
UNE | B | C | ré | E | F | g | H | je | J | K | L | M | N | O | P | Q | R | S | J | tu | V | O | X | Oui | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | sept | 8 | 9 | dix | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
Chiffrement
Intheencryptionexample, usethevaluecorrespondingtoeachletterintheprecedingtabletoknowthattheoriginalfiletobeencryptedis "chiffre affine", acorrespondsto5, bcorrespondsto8, andmcorrespondsto26 (becauseatotalof26lettersareused) .Allpossiblevalues ofaare1,3,5,7,9,11,15,17,19,21,23, and25.Ifaisnotequalto1, thevalueofbcanberandomlyselected, sothefunctionofthisencryptionexampleis.Thefirststepinencryptingamessageistowriteoutthenumericvalueofeachletter .
Fichier d'origine : | UNE td> | F | F | je | N | E | C | je | P | H | E | R |
X: | 0 | 5 | 5 | 8 | 13 | 4 | 2 | 8 | 15 | sept | 4 | 17 |
Maintenant, prenez les valeurs de x et résolvez la première partie de l'équation, (5x+8). Après avoir obtenu la valeur correspondant à chaque lettre (5x+8), prenez le reste de 26. Le tableau suivant présente les quatre premières étapes du chiffrement.
Fichier d'origine : | UNE td> | F | F | je | N | E | C | je | P | H | E | R |
X | 0 | 5 | 5 | 8 | 13 | 4 | 2 | 8 | 15 | sept | 4 | 17 |
5x+8 | 8 | 33 | 33 | 48 | 73 | 28 | 18 | 48 | 83 | 43 | 28 | 93 |
(5x+8)mod26 | 8 | sept | sept | 22 | 21 | 2 | 18 | 22 | 5 | 17 | 2 | 15 |
LadernièreétapeduchiffrementdumessageestdetrouverlalettrecorrespondanteValeurNumérique.Danscetexemple,letextechiffrédoitêtreIHHWVCSWFRCP.
Fichier d'origine : | UNE td> | F | F | je | N | E | C | je | P | H | E | R |
X | 0 | 5 | 5 | 8 | 13 | 4 | 2 | 8 | 15 | sept | 4 | 17 |
5x+8 | 8 | 33 | 33 | 48 | 73 | 28 | 18 | 48 | 83 | 43 | 28 | 93 |
(5x+8)pmod26 | 8 | sept | sept | 22 | 21 | 2 | 18 | 22 | 5 | 17 | 2 | 15 |
Fichiers cryptés : | je | H | H | O | V | C | S | O | F | R | C | P |
Décryptage
Danscetexempledechiffrement, lefichierchiffréàdéchiffrerprovientdel'exempledechiffrement .
texte chiffré : | je | H | H | O | V | C | S | O | F | R | C | P |
y : | 8 | sept | sept | 22 | 21 | 2 | 18 | 22 | 5 | 17 | 2 | 15 |
Ensuite,calculez21(y-8),puisprenezlerestedeladivisiondurésultatpar26.Letableausuivantmontrelesrésultatsdesdeuxcalculs.
Texte chiffré : | je | H | H | O | V | C | S | O | F | R | C | P |
y : | 8 | sept | sept | 22 | 21 | 2 | 18 | 22 | 5 | 17 | 2 | 15 |
21(y-8): | 0 | -21 | -21 | 294 | 273 | -126 | 210 | 294 | -63 | 189 | -126 | 147 |
(21(y-8))mod26 : | 0 | 5 | 5 | 8 | 13 | 4 | 2 | 8 | 15 | sept | 4 | 17 |
La dernière étape du déchiffrement consiste à utiliser le formulaire pour reconvertir la valeur en lettre. Le fichier d'origine déchiffré est AFFINECIPHER.
Fichier crypté : | je | H | H | O | V | C | S | O | F | R | C | P |
y : | 8 | sept | sept | 22 | 21 | 2 | 18 | 22 | 5 | 17 | 2 | 15 |
21(y-8): | 0 | -21 | -21 | 294 | 273 | -126 | 210 | 294 | -63 | 189 | -126 | 147 |
(21(y-8))mod26 : | 0 | 5 | 5 | 8 | 13 | 4 | 2 | 8 | 15 | sept | 4 | 17 |
Fichier d'origine : | UNE | F | F | je | N | E | C | je | P | H | E | R |
Chiffrer toutes les lettres
Pour un chiffrement et un déchiffrement plus rapides, toutes les lettres peuvent être chiffrées pour mapper les lettres du fichier d'origine sur le fichier chiffré un à un.
Leslettresdudocumentoriginal | UNE | B | C | ré | E | F | g | H | je | J | K | L | M | N | O | P | Q | R | S | J | tu | V | O | X | Oui | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Numérodanslefichieroriginal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | sept | 8 | 9 | dix | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 |
(5x+8)mode(26) | 8 | 13 | 18 | 23 | 2 | sept | 12 | 17 | 22 | 1 | 6 | 11 | 16 | 21 | 0 | 5 | dix | 15 | 20 | 25 | 4 | 9 | 14 | 19 | 24 | 3 |
Lettre de fichier cryptée | je | N | S | X | C | H | M | R | O | B | g | L | Q | V | UNE | F | K | P | tu | Z | E | J | O | J | Oui | ré |
Exemple de programme
En utilisant le langage de programmation Python, les codes suivants sont disponibles pour chiffrer les lettres romaines A à Z.
#Imprimezl'alphabetdumotdepasseaffine.#Amusetmmutualqualitydefaffine(a,b):foriinrange(26):printchr(i+65)+":"+chr(((a*i+b)%26)+65)#Examplesofcallingfunctionsaffine(5,8)
Ouprenez Java comme exemple :
publicvoidAffine(inta,intb){for(intnum=0;num