From 75c155f8ecfb912e43be816a946928aae6847953 Mon Sep 17 00:00:00 2001 From: Norayr Chilingarian Date: Fri, 26 Jan 2024 02:20:24 +0400 Subject: [PATCH] md5 sum calculation example. --- src/test/md5/hello.txt | 1 + src/test/md5/md5test.Mod | 50 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 src/test/md5/hello.txt create mode 100644 src/test/md5/md5test.Mod diff --git a/src/test/md5/hello.txt b/src/test/md5/hello.txt new file mode 100644 index 00000000..980a0d5f --- /dev/null +++ b/src/test/md5/hello.txt @@ -0,0 +1 @@ +Hello World! diff --git a/src/test/md5/md5test.Mod b/src/test/md5/md5test.Mod new file mode 100644 index 00000000..d697d955 --- /dev/null +++ b/src/test/md5/md5test.Mod @@ -0,0 +1,50 @@ +MODULE md5test; + IMPORT MD5 := ethMD5, Out, Files, Strings; +PROCEDURE dump(VAR arr: ARRAY OF CHAR); +VAR + i: INTEGER; + ch: CHAR; +BEGIN + i := 0; + REPEAT + Out.String("arr["); Out.Int(i, 0); Out.String("]="); Out.Int(ORD(arr[i]), 0);Out.Ln; + INC(i) + UNTIL i = Strings.Length(arr)+2 +END dump; + +PROCEDURE main; + VAR + context: MD5.Context; + digest: MD5.Digest; + hexDigest: ARRAY 33 OF CHAR; + F: Files.File; + R: Files.Rider; + input: ARRAY 512 OF CHAR; + ch: CHAR; + i: INTEGER; +BEGIN + F := Files.Old("hello.txt"); + IF F # NIL THEN + Files.Set(R, F, 0); + i := 0; + REPEAT + Files.Read(R, ch); + input[i] := ch; + INC(i) + UNTIL R.eof; + dump(input); + END; + + context := MD5.New(); (* Initialize MD5 context *) + + MD5.WriteBytes(context, input, Strings.Length(input)); (* Process input string *) + MD5.Close(context, digest); (* Finalize and get digest *) + + MD5.ToString(digest, hexDigest); (* Convert digest to hex string *) + Out.String("MD5 Hash: "); Out.String(hexDigest); Out.Ln; +END main; + +BEGIN + main; +END md5test. +