dCode

Rechercher un outil sur dCode.fr


Code César

Le chiffre de César ou code de César est un chiffrement par décalage : une des méthodes connues d'encryptage la plus simple et la plus connue. Elle consiste en une substitution de lettres par une autre plus loin dans l'alphabet. Par exemple, si l'on utilise un décalage de 3, A serait remplacé par D, B deviendrait E, et ainsi de suite.

dCode est ton ami !

Plus aucun jeu, plus aucune énigme, plus aucune chasse au trésor ne vous résisteront !
Ecrire à l'auteur de dCode

Code César

Annonces sponsorisées :

Déchiffrement du code césar


(optionnel) - ROT13

Le programme est capable de détecter automatiquement le décalage utilisé.

Chiffrement du code césar



Chiffrement/Déchiffrement avec un alphabet personnalisé



Chiffrement/Déchiffrement par la table ASCII



Principe de chiffrement

Le chiffrement est en fait une simple substitution monoalphabétique, c'est-à-dire qu'une lettre est repalcée par une seule autre.
Le code de césar a la particularité qu'il est basé sur un simple décalage de l'alphabet et, ainsi, si on note A = 1, B = 2, ..., Z = 26, que l'on ajoute une constante et que l'on conserve le résultat modulo 26. On obtient le texte codé.
On appelle la constante, la clé ou le décalage. Certains appellent la clé la lettre correspondant au A du texte clair.
Par exemple, le décalage par défaut est de 3, la lettre A devient D, que l'on nomme la clé.

Principe de déchiffrement

Le principe du déchiffrement est le même que le chiffrement, sauf que l'on soustrait une constante modulo 26.

Cryptanalyse

La méthode brute-force est la plus simple à utiliser, il suffit d?essayer toutes les clés possibles (il y en a seulement 25).
Pour trouver la solution presque à coup sur, il suffit de faire une analyse des fréquences des solutions pour chaque clé, celle qui se rapproche le plus des fréquences des lettres en français est la plus probable.

Si le message est trop court, les fréquences théoriques risque de diverger de celles du message.

Variantes / Autres noms du code césar

Chiffre d'Auguste

Le chiffre d'Auguste est le nom donné au code de César avec un décalage de 1.

Code Hélène

Dans ce codage, L vaut N (Hèlène LN), celà correspond à un décalage de 2.

Code Oeufs Pourris, KO, Pété, Hervé

Dans ce codage, E vaut I (Oeufs pourris, E pour I), K vaut O (KO : Knock Out), P vaut T (Pété PT) et R vaut V (Hervé RV), celà correspond à un décalage de 4.

Code Jeux Olympiques

Dans ce codage, J vaut O (JO : jeux olympiques), celà correspond à un décalage de 5.

Code Eiffel, PV, WC, Agé

Dans ce codage, A vaut G (Agé AG), F vaut L (Eiffel FL), P vaut V (Procès Verbal PV) et W vaut C (WC : Water Closet), celà correspond à un décalage de 6.

Code Avocat

Dans ce codage, A vaut K (Avocat), celà correspond à un décalage de 10.

Code J'y vais ou Acheter

Dans ce codage, H vaut T (HT) et J vaut V (JV), celà correspond à un décalage de 12.

ROT13

Le ROT13 est le nom donné au code de César avec un décalage de 13.

Code Hergé, Déesse ou Happé

Dans ce codage, R vaut G (Hergé Renseignements Généraux RG), D vaut S (Déesse DS) et A vaut P (happé), celà correspond à un décalage de 15.

Code Cassé ou Meuh

Dans ce codage, K vaut C (Cassé KC) et M vaut E (Meuuuh ME), celà correspond à un décalage de 18.

Code A voté

Dans ce codage, A vaut T (a voté), celà correspond à un décalage de 19.

Informations complémentaires

Pourquoi le code césar s'appelle-t-il ainsi ?

Cette méthode doit son nom à Jules César, qui utilisait cette technique pour certaines de ses correspondances, notamment militaires. Il écrivait par exemple à Ciceron en remplaçant chaque lettre par celle située 3 rangs plus loin dans l'alphabet.

Quelles sont les limites du code de César ?

C'est une technique de chiffrement par substitution, c'est-à-dire que chaque lettre du texte en clair est remplacée par une autre lettre à distance fixe dans l'alphabet. Pour le décoder, il suffit de tester les 26 possibilités de décalage.

Quelle est la particularité du ROT13 ?

Il s'agit du chiffre de César avec une décalage de 13. Ce code permet d'être réversible, en effet en rechiffrant par la même méthode (en décalant à nouveau de 13) on retrouve le texte original.

César avec le code césar, ça donne quoi ?

DFTBS, EGUCT, FHVDU, GIWEV, HJXFW, IKYGX, JLZHY, KMAIZ, LNBJA, MOCKB, NPDLC, OQEMD, PRFNE, QSGOF, RTHPG, SUIQH, TVJRI, UWKSJ, VXLTK, WYMUL, XZNVM, YAOWN, ZBPXO, ACQYP, BDRZQ

Programmation

En Python

def decaler(caractere, decalage): if caractere.islower(): return chr(((ord(caractere)-97+decalage) % 26 )+97) elif caractere.isupper(): return chr(((ord(caractere)-65+decalage) % 26 )+65) else: return caractere # non alphabétique def cesar(phrase, shift): message = "" for caractere in phrase: message += decaler(caractere, shift) return message texte_clair = "Alea jacta est!" texte_code = cesar(texte_clair, 3) print texte_clair, "devient", texte_code

En Java

public class Caesar { public static final char[] alpha = {'A','B','C','D','E','F','G','H','I','J','K','L','M', 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'}; protected char[] texte_code = new char[26]; protected char[] texte_clair = new char[26]; public Caesar(Integer decalage) { for (int i=0; i < 26; i++) texte_code[i] = alpha[(i + decalage) % 26]; for (int i=0; i < 26; i++) texte_clair[texte_code[i] - 'A'] = alpha[i]; } public String codage(String secret) { char[] message = secret.toCharArray(); for (int i=0; i < message.length; i++) if (Character.isUpperCase(message[i])) message[i] = texte_code[message[i] - 'A']; return new String(message); } public String decodage(String secret) { char[] message = secret.toCharArray(); for (int i=0; i < message.length; i++) if (Character.isUpperCase(message[i])) message[i] = texte_clair[message[i] - 'A']; return new String(message); } public static void main(String[] args) { Caesar message = new Caesar(); System.out.println("Alphabet 1 = " + new String(message.texte_code)); System.out.println("Alphabet 2 = " + new String(message.texte_clair)); String secret = "CAIUS JULIUS CAESAR"; secret = message.texte_code(secret); System.out.println(secret); secret = message.texte_clair(secret); System.out.println(secret); } }

En C

#include #include void cesar_encode(int decalage, const char *texte_clair, char *texte_code); void cesar_decode(int decalage, const char *texte_code, char *texte_clair); int main(int argc, char *argv[]){ char *texte_clair = "Ave, Caesar, morituri te salutant !"; char *texte_code = malloc(strlen(texte_clair)+1); char *resultat = malloc(strlen(texte_clair)+1); cesar_encode(10, texte_clair,texte_code); cesar_decode(10, texte_code,resultat); printf("-->original : %s\n-->texte code : %s\n-->texte clair : %s\n", texte_clair, texte_code, resultat); free(texte_code); free(resultat); system("PAUSE"); return 0; } void cesar_encode(int decalage, const char *texte_clair, char *texte_code){ int i, length = strlen(texte_clair); for(i = 0; i < length; i++){ if (!isalpha(texte_clair[i])){ texte_code[i] = texte_clair[i]; }else{ texte_code[i] = (tolower(texte_clair[i]) + decalage - 'a')& + 'a'; } } texte_code[i] = '\0'; } void cesar_decode(int decalage, const char *texte_code, char *texte_clair){ int i, length = strlen(texte_code); for(i = 0; i < length; i++){ if (!isalpha(texte_code[i])){ texte_clair[i] = texte_code[i]; }else{ texte_clair[i] = (tolower(texte_code[i]) - 'a' - decalage + 26)& + 'a'; } } texte_clair[i] = '\0'; }

En Visual Basic VB

Friend Class Cesar Private _decalage As Integer Public Property Decalage() As Integer Get Return _decalage End Get Set(ByVal value As Integer) _decalage = value End Set End Property Public Sub New() Me.New(3) End Sub Public Sub New(ByVal Decalage As Integer) Me.Decalage = Decalage End Sub Public Function Encode(ByVal texteClair As String) As String Dim texteCode As String = String.Empty Dim caracteres(texteClair.Length) As Char For i As Integer = 0 To texteClair.Length - 1 caracteres(i) = _ Convert.ToChar((Convert.ToInt32( Convert.ToChar(texteClair(i))) + Me.Decalage)) Next texteCode = New String(caracteres) Return texteCode End Function Public Function Decode(ByVal texteCode As String) As String Dim texteClair As String = String.Empty Dim caracteres(texteCode.Length) As Char For i As Integer = 0 To texteCode.Length - 1 caracteres(i) = _ Convert.ToChar((Convert.ToInt32( Convert.ToChar(texteCode(i))) - Me.Decalage)) Next texteClair = New String(caracteres) Return texteClair End Function End Class

En Javascript

function CesarEncode(cle, message) { var resultat = ""; var decalage = parseInt(cle); message = message.toUpperCase(); var longueur = message.length; for (var i = 0; i < longueur; i++) { var val = message.charCodeAt(i) - 65; if (val >= 0) resultat += String.fromCharCode(((val + decalage) % 26) + 65); } return resultat; }

Code source

dCodeur se réserve la propriété du code source du script Code César. Toute demande écrite pour un applet (déchiffrement, chiffrement, encodage, décodage, encryptage, décryptage, traduction, traducteur, conversion, solveur), une fonction (décrypter, encrypter, déchiffrer, chiffrer, décoder, code, traduire, convertir, résoudre) ou un script en langage Java, C++, PHP, Python, etc. pourra être formulée via la page contact.

Commentaires


Menu

Outils similaires

Recommander



Mots-clés

Liens


© 2013 dcode.fr — Le site indispensable pour résoudre les énigmes, les jeux et les chasses au trésor. dCode