Cryptage : méthode de substitution

Soyez le premier à donner votre avis sur cette source.

Vue 7 455 fois - Téléchargée 499 fois

Description

Voici un programme qui crypte et décrypte un message grâce à la méthode de substitution. On entre une message sous forme de chaine de caractère, on choisit une clé de cryptage, et enfin, on clique sur le bouton pour crypter notre message.
Pour le décryptage, on tape le message crypté, on donne la clé de cryptage qui a été utilisée, et on appuie sur le bouton de décryptage.

Ici, les caractères utilisés sont : les caractères de A à Z (les minuscules seront transformées en majuscules), ainsi que l'espace. La chaine doit être au maximum de 80 caractères (vous pouvez tout changer en modifiant la source bien évidemment).
La clé de cryptage doit être comprise entre 0 et 99.

Source / Exemple :


///////////////////////////////////////////////////////////
// Fichier              : uSubstitution.pas              //
// Auteur               : Stéphane HAIMET                //
// Date de création     : 26/01/08                       //
// Date de modification : 15/02/08                       //
///////////////////////////////////////////////////////////

unit uSubstitution;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, uProcedures;

type
  TForm1 = class(TForm)
    eMessage: TEdit;
    Label1: TLabel;
    bCrypter: TBitBtn;
    bFermer: TBitBtn;
    bDecrypter: TBitBtn;
    eResultat: TEdit;
    Label2: TLabel;
    CBPlusMoins: TComboBox;
    Label3: TLabel;
    eCle: TEdit;
    procedure eMessageChange(Sender: TObject);
    procedure eCleChange(Sender: TObject);
    procedure bCrypterClick(Sender: TObject);
    procedure bDecrypterClick(Sender: TObject);

  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//Quand on modifie l'edit de message
procedure TForm1.eMessageChange(Sender: TObject);
begin
   eResultat.Text:='';
end;

//Quand on modifie l'édit de clé
procedure TForm1.eCleChange(Sender: TObject);
begin
   eResultat.Text:='';
end;

//Quand on clique sur le bouton Crypter
procedure TForm1.bCrypterClick(Sender: TObject);
var message, resultat : string[80];
    cle, plusMoins : string[2];
    varVerifCle, varVerifMessage : string;
begin
  //On vérifie les champs clé et message :
  varVerifCle:=verifCle(eCle.text);
  varVerifMessage:=verifMessage(eMessage.Text);
  //Si les verif ne sont pas ok, on affiche l'erreur, sinon on crypte
  if((varVerifCle<>'ok') or (varVerifMessage<>'ok') or (eCle.Text='') or (eMessage.Text='')) then
  begin
     messagedlg('Le message doit contenir des caractères compris entre A et Z ainsi que l''espace.La clé doit être un nombre entier entre 1 et 99', mtWarning, [mbOk], 0);
  end
  else
  begin
     message:=eMessage.text;
     //On commence par mettre le message en majuscule :
     message:=mettreEnMajuscule(message);
     eMessage.text:=message;
     cle:=eCle.text;
     plusMoins:=CBPlusMoins.Text;
     //On crypte le message grâce à la fonction crypter
     resultat:=crypter(message, cle, plusMoins);
     //On affiche le résultat
     eResultat.Text:=resultat;
  end;
end;

//Quand on clique sur le bouton décrypter :
procedure TForm1.bDecrypterClick(Sender: TObject);
var message, resultat : string[80];
    cle, plusMoins : string[2];
    varVerifCle, varVerifMessage : string;
begin
   //On vérifie les champs clé et message :
   varVerifCle:=verifCle(eCle.text);
   varVerifMessage:=verifMessage(eMessage.Text);
   //Si les verif ne sont pas ok, on affiche l'erreur, sinon on décrypte
   if((varVerifCle<>'ok') or (varVerifMessage<>'ok') or (eCle.Text='') or (eMessage.Text='')) then
   begin
      messagedlg('Le message doit contenir des caractères compris entre A et Z ainsi que l''espace.La clé doit être un nombre entier entre 1 et 99', mtWarning, [mbOk], 0);
   end
   else begin
      message:=eMessage.text;
      //On commence par mettre le message en majuscule :
      message:=mettreEnMajuscule(message);
      eMessage.text:=message;
      cle:=eCle.Text;
      plusMoins:=CBPlusMoins.Text;
      //On décrypte le message grâce à la fonction decrypter :
      resultat:=decrypter(message,cle,plusMoins);
      //On affiche le résultat :
      eResultat.text:=resultat;
   end;
end;

end.

Conclusion :


Enjoy

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

offlake
Messages postés
196
Date d'inscription
mercredi 3 septembre 2008
Statut
Membre
Dernière intervention
17 janvier 2009
-
Bonjour,
Je trouve ça que c'est une Bonne Méthode de Cryptage
Rien à dire un Code complet, un exemple à suivre!!
BY OFFLAKE
aymoun19
Messages postés
1
Date d'inscription
jeudi 23 juillet 2009
Statut
Membre
Dernière intervention
23 juillet 2009
-
comment le windows reconnait l'extention .pas et comment faire pour éxécuter ce programme.
bad_dark_spirit
Messages postés
25
Date d'inscription
dimanche 10 décembre 2006
Statut
Membre
Dernière intervention
28 juin 2010
-
Bonjour Aymoun19,
Windows ne va pas reconnaître seul un .pas. Tu dois faire un clic droit et "modifier", ce qui va ouvrir le bloc-note de Windows. Sinon tu peux l'ouvrir avec des outils du style Notpad++.
Pour l'exécutable, tu dois soit télécharger Borland Delphi (essaie de trouver une version "étudiante"), ou alors il existe des outils pour compiler grâce à la console, mais je ne les connais pas.

Bon courage.
Bacterius
Messages postés
3869
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
5 -
Encore une fois, la sécurité est très mauvaise. Il n'y a à priori que 100 clefs possibles, et les clefs faibles sont 0, 27, 54 et 81. Du coup, on pourrait penser qu'il ne reste que 96 clefs, mais en fait non, il n'en reste que 25, puisque 1 est équivalent à 28 qui est équivalent à 55 qui est équivalent à 82, etc ... Bref il reste 25 clefs, que l'on aura tôt fait d'essayer et de comparer ;o

Encore une fois, je ne critique pas le code mais le principe de l'algorithme.

Cordialement, Bacterius !
tsainvet
Messages postés
96
Date d'inscription
samedi 27 mars 2004
Statut
Membre
Dernière intervention
14 décembre 2017
-
bonjour

pour moi dans un premier temps je trouve ce code sympa après a qui veux l'amélioré ;-)

toute fois je trouve dommage de ne pouvoir crypté que max 255 caractères :-(

est il possible de modifié et crypté au temps de ligne a volonté ?

jais repris le source un éditeur de texte type bloc note et j'y est rajouté ce code

problème je ne peu crypté mon texte a cause des accents , des chiffres et autre ponctuation et helas aux nombres de caractères qui est limité a 255..

jaimerais vraiment pouvoir faire cela avez vous des idées de code ?? merci

si non bravo pour ce petit code ;-)

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.