Résolu JavaScript - Cryptage César ?

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 545
Points
24 772
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 :trollface:

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:
 

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 545
Points
24 772
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 :trollface:) 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 ;)
 

Daniel.Dev

Membre
Inscription
29 Novembre 2016
Messages
160
Réactions
90
Points
1 566
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 :trollface:) 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 !
Haut