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
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.