Commentçamarche.net
CodeS-SourceS
Rechercher un code, un tuto, une réponse

Crypto - carré de vigenere

0/5 (3 avis)

Vue 12 053 fois - Téléchargée 8 924 fois

Description

Ce code permet de crypter et décrypter un texte suivant la methode dite du carré de Vigenere.
Il a ete ecrit en Turbo Pascal.
Il respecte la casse et conserve la ponctuation.

Si vous avez des questions n'hésitez pas...

Source / Exemple :


{la fonction crypt est une fonction utilisée par la fonction vigenere, qui est la fonction à appeler pour coder votre texte.}

{la fonction vigenere crypte ET decrypte, pas besoin d'une seconde fonctino}

{la fonction vigenere requiert trois paramètres: deux paramètres string, le texte et la clé de cryptage, ainsi qu'une variable booleenne encode, qui doit etre fausse pour decoder et vrai pour encoder le texte}

FUNCTION crypt(text, key:string; cryp: boolean): string;

VAR casse,i   : integer;
    cText,cKey: char;

LABEL fin_func;

BEGIN

   {passage de variables string a des variables char}
   cText:=text[1];
   cKey:=key[1];

   {on verifie ke cText soit bien une lettre et non un espace ou un caractere de ponctuation}
   IF (Pos(UpCase(cText), 'AZERTYUIOPQSDFGHJKLMWXCVBN') = 0) THEN
      BEGIN
         crypt:=text;
         GOTO fin_func;
      END;

   {sauvegarde de parametre pour la conservation de la casse}
   IF (ord(cText) > 95) THEN casse:=96 ELSE casse:=64;

   IF (cryp = FALSE) THEN
      {décryptage}
      BEGIN
         i:=(((ord(UpCase(cText)) - ord(UpCase(cKey))) + 26) mod 26) + 1;

      END
   ELSE
      {cryptage}
      BEGIN
         i:=(((ord(UpCase(cText)) + ord(UpCase(cKey)))-130) mod 26) + 1;
      END;
   crypt:=chr(i + casse);
   fin_func:
END;

FUNCTION vigenere(text, key: string; encode: boolean): string;

VAR sTemp : string ;
    i  : integer;

BEGIN
   {decomposition du texte en charactères et gestino de la repetition de la clé afin de passer les valeurs a crypt}
   vigenere:='';
   FOR i:= 0 TO (Length(text) - 1) DO
      BEGIN
         sTemp:=crypt(text[i + 1],key[1 + (i mod Length(key))], encode);
         vigenere:=concat(vigenere, sTemp)

      END;
   
end;

Conclusion :


J'ai decidé de modifier ce code, à l'origine présentant un programme complet, afin de n'y mettre que les fonctions nécessaires au cryptage, ce n'est donc plus qu'un module ajoutable à un code deja existant permettant de crypter/décrypter un texte. Mais je pense que c'est plutot la vocation de ce genre de source.

Turbo Pascal 7.01 FR est dispo gratuitement sur le site de borland.

Ce code est réputé non buggé, mais si desfois quelque chose m'avais échappé, n'hésitez pas.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.