begin process at 2010 02 10 10:23:22
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Sécurité

 > CRYPTAGE EN CESAR COMPRENNANT TOUS LES SYMBOLES ASCII

CRYPTAGE EN CESAR COMPRENNANT TOUS LES SYMBOLES ASCII


 Information sur la source

Note :
Aucune note
Catégorie :Sécurité Niveau :Débutant Date de création :29/11/2004 Date de mise à jour :16/01/2005 18:59:07 Vu / téléchargé :10 889 / 453

Auteur : Kit3kl4t

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Bon bah voila, mon premier post, surement pas le dernier.
Ce programme crypte et decrypte une chaine de caractère grace a l'algorithme "cesar" qui consiste je le rappelle a crypter grace a une clé numérique, un court exemple valant mieux qu'une longue explication :
a avec la clé 1 donne b
a avec la clé 2 donne c etc ...

Source

  • /////////////////////
  • // PARTIE CRYPTAGE //
  • /////////////////////
  • function cesar_cryptage(chaine_decryptee:string; decallage:integer ): string;
  • var
  • taille_chaine : integer;
  • tableau_new_chr : array of char;
  • i:integer;
  • x_ascii,y_ascii:byte;
  • x:char;
  • chaine_tempo:string;
  • begin
  • taille_chaine := length(chaine_decryptee);
  • SetLength(tableau_new_chr, taille_chaine+1);
  • for i:=1 to taille_chaine+1 do
  • begin
  • x:=chaine_decryptee[i];
  • x_ascii :=ord(x);
  • y_ascii :=(x_ascii+decallage )mod 255; //la valeur ascii de la lettre considérée est
  • //ajoutée a la valeur de la clé puis congrue
  • tableau_new_chr[i]:= chr(y_ascii); //maj du tableau des caracteres.
  • end;
  • for i:= 1 to taille_chaine do //ajout de tous les char du tableau dans
  • begin //chaine tempo qui sera le result lorsqu'il aura été complété.
  • chaine_tempo := chaine_tempo + tableau_new_chr[i];
  • end;
  • result := chaine_tempo;
  • end;
  • ///////////////////////
  • // PARTIE DECRYPTAGE //
  • ///////////////////////
  • function cesar_decryptage(chaine_cryptee:string; decallage:integer ): string;
  • var
  • taille_chaine : integer;
  • tableau_new_chr : array of char;
  • i:integer;
  • x_ascii,y_ascii:byte;
  • x:char;
  • chaine_tempo:string;
  • begin
  • taille_chaine := length(chaine_cryptee);
  • SetLength(tableau_new_chr, taille_chaine+1);
  • for i:=1 to taille_chaine+1 do
  • begin
  • x:=chaine_cryptee[i];
  • x_ascii :=ord(x);
  • y_ascii :=(x_ascii-decallage)mod 255; // difference ici "-"
  • tableau_new_chr[i]:= chr(y_ascii);
  • end;
  • for i:= 1 to taille_chaine do
  • begin
  • chaine_tempo := chaine_tempo + tableau_new_chr[i];
  • end;
  • result := chaine_tempo;
  • end;
/////////////////////
// PARTIE CRYPTAGE //
/////////////////////
function cesar_cryptage(chaine_decryptee:string; decallage:integer ): string;
var
taille_chaine : integer;
tableau_new_chr : array of char;
i:integer;
x_ascii,y_ascii:byte;
x:char;
chaine_tempo:string;

begin


taille_chaine := length(chaine_decryptee);
SetLength(tableau_new_chr, taille_chaine+1);


for i:=1 to taille_chaine+1 do
    begin

    x:=chaine_decryptee[i];
    x_ascii :=ord(x);
    y_ascii :=(x_ascii+decallage )mod 255; //la valeur ascii de la lettre considérée est
                                                     //ajoutée a la valeur de la clé puis congrue

    tableau_new_chr[i]:= chr(y_ascii);              //maj du tableau des caracteres.
end;

    for i:= 1 to  taille_chaine do                  //ajout de tous les char du tableau dans
    begin                                           //chaine tempo qui sera le result lorsqu'il aura été complété.
    chaine_tempo := chaine_tempo + tableau_new_chr[i];
    end;
result := chaine_tempo;

end;

///////////////////////
// PARTIE DECRYPTAGE //
///////////////////////
function cesar_decryptage(chaine_cryptee:string; decallage:integer ): string;
var
taille_chaine : integer;                        
tableau_new_chr : array of char;
i:integer;
x_ascii,y_ascii:byte;
x:char;
chaine_tempo:string;
begin
taille_chaine := length(chaine_cryptee);
SetLength(tableau_new_chr, taille_chaine+1);

for i:=1 to taille_chaine+1 do
    begin

    x:=chaine_cryptee[i];
    x_ascii :=ord(x);
    y_ascii :=(x_ascii-decallage)mod 255;  // difference ici "-"

    tableau_new_chr[i]:= chr(y_ascii);
end;

    for i:= 1 to  taille_chaine do
    begin
    chaine_tempo := chaine_tempo + tableau_new_chr[i];
    end;
result := chaine_tempo;

end;

 Conclusion

pour tout renseignement ou pour me signaler bug ou autre : akni_kiteklat@hotmail.com
je n'ai pas "proteger" les entrées : d'ou les erreur si vous entrer des choses innoportunes (lettre dans l'edit clé etc)
Etant mon premier "vrai" programme, il est surement encombré de choses inutiles ou mal faites. :) n'hesitez pas a me corriger .
Voila juste la fonction peut etre utilisée. Thx pour les conseils
nb : la fonction décryptage n'est pas tres utiles :p du fait qu'elle ne fait qu'inverser la clé : exemple : avec le mot efg :
cesar_cryptage( def,1) = efg
cesar_decryptage(efg,1) = def
(il suffirai de prendre la fonction cesar_cryptage(efg,-1)) voila.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

16 janvier 2005 18:59:07 :
mise a jour : cette methode de cryptage (peut fiable :p) peut desormais etre utilisé librement : création de fonction cryptage et decryptage.

 Sources de la même categorie

Source avec Zip Source avec une capture GOLDEN PASSWORDS - STOCKEZ VOS MOTS DE PASSE ! par Bacterius
Source avec Zip Source avec une capture LEA EN MODE CHIFFREMENT (SEA) par Bacterius
Source avec Zip Source avec une capture DELPHI : SHA-1 EN MODE CHIFFREMENT (SHACAL) par FENETRES
Source avec Zip SECUSB ; LOGICIEL D'EFFACEMENT SÉCURISÉ POUR CLEF USB par ludodelphi
Source avec Zip PROTECTION COPIE CD, OU PROGRAMME SUR DONGLE USB par Huugooo

Commentaires et avis

Commentaire de Squaf le 30/11/2004 00:59:35

Ton cryptage marche bien mais ton code est pas terrible a mon avis.
En effet, tes fonctions associées au bouton crypter et decrypter ne sont utilisables que dans ce contexte.
Declare les dans un autre unit, cela te permettra de les rendres plus generique et contente toi seulement de les appeller dans les procedures buttonclikc.
Cela rendra ton code exploitable par d'autre programmes que le tien. Ainsi si j'ai besoin de ton systeme de cryptage dans un autre projet, j'utilise ta nouvelle unit comprenant les fonctions qui m'interessent et je les appellent avec les bons parametres.
Cela permet aussi la disparition de tes variables globales.

Commentaire de MAURICIO le 30/11/2004 12:30:59

Je suis d' accord avec Squaf ...
De plus, ce cryptage n' est pas terrible vu qu' il suffit de créer un code qui va tester toutes les clés possibles pour dechiffrer!!!
Tu as un source qui s' appelle 'Chiffre VERNAM' qui t' apporte un cryptage 100% fiable vu qu' il crée une clé pour chaque lettre. D' ailleurs j' allais poster une version bien meilleure quand ton source m' a interpelé.

Commentaire de Mo0n le 01/12/2004 14:41:17

Bravo kit ^^ Ton premier vrai programme fonctionne a merveille :D Je pense que je vais l'utiliser pour mon TPE ! lol, Bonne continuation dans la prog et a demain ++ je suis fier de toi !

Commentaire de Kit3kl4t le 01/12/2004 17:27:20

Merci pour les conseils et pour les critiques :)
je vais de ce pas regarder comment appeler une fonction à partir d'une autre unit (et oui je débute !:)

Commentaire de Kit3kl4t le 01/12/2004 17:27:24

Merci pour les conseils et pour les critiques :)
je vais de ce pas regarder comment appeler une fonction à partir d'une autre unit (et oui je débute !:)

Commentaire de Kit3kl4t le 01/12/2004 17:33:12

oups désolé pour le double post.
Pour te répondre mauricio, je sais que le Cesar est un cryptage vraiment peu fiable, facilement decryptable.
C'est dans le cadre d'un tpe et on commence par le plus simple ! Et puis j'avoue, je n'ai pas resisté à la tentation de poster un premier code :)
bon je vais de ce pas le modifier.Bye ! (thx moon :)

Commentaire de MAURICIO le 02/12/2004 11:27:04

Bon, comme j' ai essayé moi même de créer un mode de cryptage (elle est dans le commentaire de ma source sur le cryptage de VERNAM), je sais que la tâche n' est point facile, alors, je te félicite pour ton iniciative et, si tu as besoin d' aide pour créer une procédure dans une autre unit, jette un oeil sur mes sources, tu trouveras ce que tu cherches dans l' une d' elle ...

Commentaire de Aaron le 31/12/2004 17:55:03

J'ai essaye comme ça :

Var
  S: String;
  I, N, X: Integer;
Begin
  // Si aucune clé n'est entrée.
  If Key.Text='' Then Exit;
  // Mettre A.Text en minuscules...
  A.Text:=LowerCase(A.Text);
  // Effacer B.Text
  B.Text:='';
  // Enlever les espace autour de A.Text.
  A.Text:=Trim(A.Text);
  // Caractères possibles.
  S:='abcdefghijklmnopqrstuvwxyz';
  // Convertir la clé en Int.
  N:=StrToInt(Key.Text);
  For I:=0 To A.GetTextLen-1 Do
    Begin
      // Modulo au cas où N>26
      N:=N Mod 26;
      // Valeur du caractère i en ascii...
      X:=Ord(A.Text[I+1]);
      // Si X est un espace...
      If X<>32 Then
        Begin
         // Valeur du caractère ascii-97(a=97)+la clé...
         B.Text:=B.Text+S[X-97+N];
        End
      // Ajouter l'espace dans la chaîne...
      Else B.Text:=B.Text+' ';
    End;

Mais ça ne marche pas dès que la clé>25 (et moins pour les grosse chaines, je comprend pas pourquoi...) :-/

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix


HTC Magic

Entre 429€ et 429€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,702 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales