{$MODE objfpc}{$LONGSTRINGS ON}
{$APPTYPE CONSOLE}
{$R *.res}
Program GenerateHashes;
Uses
SysUtils, StrUtils, HlpIHash, HlpMD5, HlpSHA1, HlpSHA2_256, HlpSHA3;
Const
TestText = 'This is some test text';
MD5TextResult = 'c93037c9c2d7be6d6ad51a0e694fad5f';
SHA1TextResult = '510ec59b0eac4a84dab06d910d7f69445a2d54c6';
SHA2TextResult = 'f4544fb4c5af57bf6a823fbb623de44363cb3384928ca95360baede7b2e578c5';
SHA3TextResult = 'd3baea49d0668c3c0d20c9ff64cc97a5947db1333d9e8c53e57c8b283557c15b458f5923fe6ef9b1704c889f0edf0ba9';
TestFile = 'C:\Temp\TestFile.TXT';
MD5FileResult = '5fa5f3ef591f54557564da635b169ad7';
SHA1FileResult = 'f2f739fb7c1a755563520d818abf6c892295e292';
SHA2FileResult = 'ef76f11b7e364532fac399bcf97c63ecff4b3697cf693b0ee2022011e6ba79cb';
SHA3FileResult = '2514447bfca1950b8718f3d55dba830fee11da94d9af315725b06763c27c099dea4ddee417c2ddcbeaf00e72d14b82a0';
Var
MD5Hash, SHA1Hash, SHA2Hash, SHA3Hash : IHash;
ThisHash : String;
Begin
WriteLn('Calculating hash for following file: ', TestFile);
MD5Hash := TMD5.Create();
ThisHash := MD5Hash.ComputeFile(TestFile).ToString();
WriteLn('MD5 Hash (Test) ........... ', ThisHash);
WriteLn('MD5 Hash (Real) ........... ', MD5FileResult);
WriteLn;
SHA1Hash := TSHA1.Create();
ThisHash := SHA1Hash.ComputeFile(TestFile).ToString();
WriteLn('SHA1 Hash (Test) .......... ', ThisHash);
WriteLn('SHA1 Hash (Real) .......... ', SHA1FileResult);
WriteLn;
SHA2Hash := TSHA2_256.Create();
ThisHash := SHA2Hash.ComputeFile(TestFile).ToString();
WriteLn('SHA2(256) Hash (Test) ..... ', ThisHash);
WriteLn('SHA2(256) Hash (Real) ..... ', SHA2FileResult);
WriteLn;
SHA3Hash := TSHA3_384.Create();
ThisHash := SHA3Hash.ComputeFile(TestFile).ToString();
WriteLn('SHA3(384) Hash (Test) ..... ', ThisHash);
WriteLn('SHA3(384) Hash (Real) ..... ', SHA3FileResult);
WriteLn;
WriteLn;
WriteLn('Calculating hash for following text: ', TestText);
MD5Hash := TMD5.Create();
ThisHash := MD5Hash.ComputeString(TestText, TEncoding.UTF8).ToString();
WriteLn('MD5 Hash (Test) ........... ', ThisHash);
WriteLn('MD5 Hash (Real) ........... ', MD5TextResult);
WriteLn;
SHA1Hash := TSHA1.Create();
ThisHash := SHA1Hash.ComputeString(TestText, TEncoding.UTF8).ToString();
WriteLn('SHA1 Hash (Test) .......... ', ThisHash);
WriteLn('SHA1 Hash (Real) .......... ', SHA1TextResult);
WriteLn;
SHA2Hash := TSHA2_256.Create();
ThisHash := SHA2Hash.ComputeString(TestText, TEncoding.UTF8).ToString();
WriteLn('SHA2(256) Hash (Test) ..... ', ThisHash);
WriteLn('SHA2(256) Hash (Real) ..... ', SHA2TextResult);
WriteLn;
SHA3Hash := TSHA3_384.Create();
ThisHash := SHA3Hash.ComputeString(TestText, TEncoding.UTF8).ToString();
WriteLn('SHA3(384) Hash (Test) ..... ', ThisHash);
WriteLn('SHA3(384) Hash (Real) ..... ', SHA3TextResult);
WriteLn;
End.