Résolu JavaScript - Cryptage César ?

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 195
Réactions
7 550
Points
27 932
RGCoins
1 152
Hey ;) J'essaie de créer une fonction en JavaScript pour crypter un texte grâce à une
Wikipedia a dit:
Méthode de chiffrement très simple utilisée par Jules César dans ses correspondances secrètes. Le texte chiffré s'obtient en remplaçant chaque lettre du texte clair original par une lettre à distance fixe, toujours du même côté, dans l'ordre de l'alphabet.

J'ai fait un code (pas optimisé du tout, je vous l'accorde) qui ressemble à ça. Seulement, ce code rencontre un problème.

Admettons que je tape le mot "test". Le code remplace lettre par lettre mais ne s'arrête pas à un seul changement:
  • t est remplacé par w
    w est remplacé par z
    z est remplacé par c
  • e est remplacé par h
    h est remplacé par k
    k est remplacé par n
    n est remplacé par q
    q est remplacé par t
    t est remplacé par w
    w est remplacé par z
    z est remplacé par c
  • s est remplacé par v
    v est remplacé par y
    y est remplacé par b
  • t est remplacé par w
    w est remplacé par z
    z est remplacé par c
Le programme affiche donc ccbc !

Le problème est donc que le code s'exécute en boucle. Alors là certains d'entre vous me diront peut-être
Tu a dit:
oui mais tu as mis tes replace() dans une boucle donc c'est normal
Ce à quoi je vous répondrai
Paul GTP a dit:
mais pas du tout espèce de noob c'est juste que le code se lit de haut en bas donc forcément le problème rencontré est normal, boucle fort ou pas :troll:

Voici ce que je cherche à faire comprendre au code si je rentrais le mot test:
  • t est remplacé par w
  • e est remplacé par h
  • s est remplacé par v
  • t est remplacé par w
Le programme afficherait donc whvw !
Je sais que mon code est incorrect, mais je vous laisse une trace de ce que j'ai fait:
Code:
function cesar() {
    var message = document.getElementById("cesar").value;

    for (i = 0; i < message.length; i++) {
        var message = message.replace(/a/gm, "d");
        var message = message.replace(/b/gm, "e");
        var message = message.replace(/c/gm, "f");
        var message = message.replace(/d/gm, "g");
        var message = message.replace(/e/gm, "h");
        var message = message.replace(/f/gm, "i");
        var message = message.replace(/g/gm, "j");
        var message = message.replace(/h/gm, "k");
        var message = message.replace(/i/gm, "l");
        var message = message.replace(/j/gm, "m");
        var message = message.replace(/k/gm, "n");
        var message = message.replace(/l/gm, "o");
        var message = message.replace(/m/gm, "p");
        var message = message.replace(/n/gm, "q");
        var message = message.replace(/o/gm, "r");
        var message = message.replace(/p/gm, "s");
        var message = message.replace(/q/gm, "t");
        var message = message.replace(/r/gm, "u");
        var message = message.replace(/s/gm, "v");
        var message = message.replace(/t/gm, "w");
        var message = message.replace(/u/gm, "x");
        var message = message.replace(/v/gm, "y");
        var message = message.replace(/w/gm, "z");
        var message = message.replace(/x/gm, "a");
        var message = message.replace(/y/gm, "b");
        var message = message.replace(/z/gm, "c");
        var message = message.replace(/A/gm, "D");
        var message = message.replace(/B/gm, "E");
        var message = message.replace(/C/gm, "F");
        var message = message.replace(/D/gm, "G");
        var message = message.replace(/E/gm, "H");
        var message = message.replace(/F/gm, "I");
        var message = message.replace(/G/gm, "J");
        var message = message.replace(/H/gm, "K");
        var message = message.replace(/I/gm, "L");
        var message = message.replace(/J/gm, "M");
        var message = message.replace(/K/gm, "N");
        var message = message.replace(/L/gm, "O");
        var message = message.replace(/M/gm, "P");
        var message = message.replace(/N/gm, "Q");
        var message = message.replace(/O/gm, "R");
        var message = message.replace(/P/gm, "S");
        var message = message.replace(/Q/gm, "T");
        var message = message.replace(/R/gm, "U");
        var message = message.replace(/S/gm, "V");
        var message = message.replace(/T/gm, "W");
        var message = message.replace(/U/gm, "X");
        var message = message.replace(/V/gm, "Y");
        var message = message.replace(/W/gm, "Z");
        var message = message.replace(/X/gm, "A");
        var message = message.replace(/Y/gm, "B");
        var message = message.replace(/Z/gm, "C");
      
        document.getElementById("valuecesar").innerHTML += message[i];
    }
}

Ça n'est pas d'une grande utilité, mais je sens qu'on va me le demander en commentaires (d)
Voici donc un bout de ma page ;)
HTML:
            <div class="character">
                <p>Entre un message à crypter:<br />
                <input type="text" id="cesar" /><br />
                <button onclick="cesar()">Crypter</button></p>
              
                <p><b>Message crypté:</b> <span id="valuecesar"></span><br /></p>
            </div>

Comment arriver à mon objectif ? Le but serait d'utiliser les bases de JS sans trop rentrer dans la complexité.

Facultatif: Si vous savez compiler un peu le code (du genre var alphabet = "abcdefghijklmnopqrstuvw") en restant simple ce serait parfait :mmh:

S'il vous faut plus d'informations, n'hésitez pas à me les demander :p
Merci d'avance :bye:
 
Salut Paul, j'ai pas vraiment totalement compris ce que tu voulais faire mais je pense quand même avoir une idée.

C'est un truc du type ça :


(Je te conseille de regarde le code source pour t'en inspirer)
 
Salut Paul, j'ai pas vraiment totalement compris ce que tu voulais faire mais je pense quand même avoir une idée.

C'est un truc du type ça :


(Je te conseille de regarde le code source pour t'en inspirer)
Hey :p Merci à toi mais j'ai déjà check le code source de ce site (et d'un autre aussi) mais même avec mes quelques bases en JS (bien que maigres :troll:) je n'ai pas tout compris sur leurs code et je cherche à faire au plus simple (même si plus simple rime avec plus long, comme dans mon cas ci-dessus :p)

Merci quand même ;)
 
Hey :p Merci à toi mais j'ai déjà check le code source de ce site (et d'un autre aussi) mais même avec mes quelques bases en JS (bien que maigres :troll:) je n'ai pas tout compris sur leurs code et je cherche à faire au plus simple (même si plus simple rime avec plus long, comme dans mon cas ci-dessus :p)

Merci quand même ;)
Re j'étais partis manger et me laver, du coup j'y suis arrivé ;)



test est bien remplacé par whvw

n'est-ce pas beau tout ça ? :)
 
Cette réponse a aidé l'auteur de cette discussion !
Re j'étais partis manger et me laver, du coup j'y suis arrivé ;)



test est bien remplacé par whvw

n'est-ce pas beau tout ça ? :)
Merci énormément, c'est super ;)
 
Retour
Haut