- {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;
{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;