Création d'un checksum de base

Soyez le premier à donner votre avis sur cette source.

Snippet vu 6 228 fois - Téléchargée 28 fois

Contenu du snippet

Ce code permet de réaliser un checksum de base a partir du code ASCI des caracteres. Il a l'avantage d'etre rapide et leger. Pour l'exemple j'ai utilisés un type string, un tableau de string permet evidement d'avoir de meilleurs resultats. On peut tout a fait en faire une fonction. Je l'ai mis dans la catégorie fichier parce que je l'utilise pour vérifier que des fichiers n'aient pas été modifiés ...

Source / Exemple :


program asci_crypto;

{$APPTYPE CONSOLE}

uses
  SysUtils;

var
tocrypt, crypted, crypted_short, checksum : string;
i : integer;

begin
  { TODO -oUser -cConsole Main : placez le code ici }

WriteLn('Programme de cryptographie... Dr_T');
Readln(tocrypt);

if not ((Length(tocrypt) mod 2))=0 then tocrypt:=tocrypt+' ';

for i:=1 to Length(tocrypt) do
    begin
    if not (i mod 2 = 0) then crypted:=crypted+(IntToStr( (ord(tocrypt[i])+ord(tocrypt[i+1]))));
    if (i mod 3 = 0) then crypted_short:=crypted_short+(IntToStr( (ord(tocrypt[i])+ord(tocrypt[i+1]))));
    Write('caractere a encoder:');
    WriteLn(IntToStr(ord(tocrypt[i])));
    Write('->');
    Writeln(IntToStr(ord(tocrypt[i])+ord(tocrypt[i+1])));
    end;

for i:=1 to Length(tocrypt) do
    begin
    if (ord(tocrypt[i]) mod 7 = 0) then checksum:=checksum+crypted[i];
    end;

WriteLn('La chaine cryptee est:');
Writeln(crypted);
WriteLn;
WriteLn('La chaine cryptee courte associee est:');
WriteLn(crypted_short);
WriteLn;
WriteLn;
WriteLn('Attention, le checksum n''est revelateur que pour de grandes chaines!');
WriteLn('Checksum:');
WriteLn(checksum);
readln(tocrypt);

end.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2106
Date d'inscription
mardi 10 décembre 2002
Statut
Modérateur
Dernière intervention
15 décembre 2014
5
Moi je veux bien mais pourquoi avoir donné le titre:
CRÉATION D'UN CHECKSUM DE BASE
alors que ça aurait été plus simple de dire:
CRYPTAGE DE STRINGS.
Tu veux dire quoi par CheckSum ???
Messages postés
44
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
28 février 2006

Exact...
Je suis un peu honteux j'ai pas commenté... alors j'explique...

Ord(const : char) renvoie le code ASCI du caractere char.

A mod B donne le reste de la division de A par B, donc si A mod 2 = 0, A est pair...

On va donc avoir la somme du code asci de la 'lettre' (char) au rang N et au rang N+1

Meme chose avec A mod 7 = 0, A est multiple de 7

...
Messages postés
1
Date d'inscription
mardi 12 octobre 2004
Statut
Membre
Dernière intervention
25 avril 2005

vous devait maitre un peut plus d'explication sur le source et merci je tien a dire que le site code source est un guide quon ne peut s'en passer
merci
Messages postés
44
Date d'inscription
samedi 16 octobre 2004
Statut
Membre
Dernière intervention
28 février 2006

Oui mais?
En quoi ce commentaire apporte t-il quelque chose?

Tout n'a pas forcément a être COMPLIQUE pour être UTILISABLE (et c'est même le plus souvent l'inverse).

Personellement ce code me suffit...

Et c'est pour ca que je l'ai publié, sans disserter sur l'usage que j'en fais au 'presque' quotidien, qui ne se limite pas aux fichiers...
Messages postés
5
Date d'inscription
mercredi 28 avril 2004
Statut
Membre
Dernière intervention
24 avril 2005

léger???

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.