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.
29 avril 2005 à 17:54
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 ???
25 avril 2005 à 15:30
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
...
25 avril 2005 à 14:01
merci
24 avril 2005 à 22:05
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...
24 avril 2005 à 20:44
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.