Cryptage : méthode de substitution

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

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.