Présentation de l'algorithme :

Principe :

Application avec l'algorithme (simplifié) ci-dessous qui ne convient que si le message et la clef ne comportent que des lettres majuscules de A à Z sans espaces.
(note technique : l'instruction message.charCodeAt(pos) permet d'obtenir le code ASCII de la lettre située à la position "pos" dans la chaine "message" et l'instruction String.fromCharCode(un_nombre) renvoie la lettre dont le code ASCII correspond à "un_nombre")

Code de l'algorithme :
VARIABLES
  message EST_DU_TYPE CHAINE
  longueur_message EST_DU_TYPE NOMBRE
  clef EST_DU_TYPE CHAINE
  longueur_clef EST_DU_TYPE NOMBRE
  i EST_DU_TYPE NOMBRE
  code_lettre EST_DU_TYPE NOMBRE
  decalage EST_DU_TYPE NOMBRE
  lettre EST_DU_TYPE CHAINE
DEBUT_ALGORITHME
  LIRE message
  LIRE clef
  longueur_message PREND_LA_VALEUR message.length
  longueur_clef PREND_LA_VALEUR clef.length
  POUR i ALLANT_DE 1 A longueur_message
    DEBUT_POUR
    code_lettre PREND_LA_VALEUR message.charCodeAt(i-1)-65
    decalage PREND_LA_VALEUR clef.charCodeAt((i-1)%longueur_clef)-65
    lettre PREND_LA_VALEUR String.fromCharCode(65+(code_lettre+decalage)%26)
    AFFICHER lettre
    FIN_POUR
FIN_ALGORITHME

Fichier AlgoBox associé : vigenere.alg (faire un clic-droit et utiliser l'option "enregistrer sous" pour télécharger le fichier)

Tester l'algorithme :


(cliquer sur le bouton ci-dessus pour lancer ou relancer l'exécution de l'algorithme)
Remarque : si les messages "Algorithme lancé" et "Algorithme terminé" n'apparaissent pas au bout d'un moment dans la zone ci-dessous, c'est que l'algorithme contient une erreur.

Résultat :