60 lines
2.0 KiB
Plaintext
60 lines
2.0 KiB
Plaintext
/* NetRexx */
|
|
|
|
options replace format comments java crossref savelog symbols binary
|
|
|
|
import java.security.MessageDigest
|
|
|
|
MD5('The quick brown fox jumps over the lazy dog', '9e107d9d372bb6826bd81d3542a419d6')
|
|
-- RFC 1321 MD5 test suite:
|
|
MD5("", 'd41d8cd98f00b204e9800998ecf8427e')
|
|
MD5("a", '0cc175b9c0f1b6a831c399e269772661')
|
|
MD5("abc", '900150983cd24fb0d6963f7d28e17f72')
|
|
MD5("message digest", 'f96b697d7cb7938d525a2f31aaf161d0')
|
|
MD5("abcdefghijklmnopqrstuvwxyz", 'c3fcd3d76192e4007dfb496cca67e13b')
|
|
MD5("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", 'd174ab98d277d9f5a5611c2c9f419d9f')
|
|
MD5("12345678901234567890123456789012345678901234567890123456789012345678901234567890", '57edf4a22be3c955ac49da2e2107b67a')
|
|
|
|
return
|
|
|
|
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
method MD5(messageText, verifyCheck) public static
|
|
|
|
algorithm = 'MD5'
|
|
digestSum = getDigest(messageText, algorithm)
|
|
|
|
say '<Message>'messageText'</Message>'
|
|
say Rexx('<'algorithm'>').right(12) || digestSum'</'algorithm'>'
|
|
say Rexx('<Verify>').right(12) || verifyCheck'</Verify>'
|
|
if digestSum == verifyCheck then say algorithm 'Confirmed'
|
|
else say algorithm 'Failed'
|
|
|
|
return
|
|
|
|
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
method getDigest(messageText = Rexx, algorithm = Rexx 'MD5', encoding = Rexx 'UTF-8', lowercase = boolean 1) public static returns Rexx
|
|
|
|
algorithm = algorithm.upper
|
|
encoding = encoding.upper
|
|
|
|
message = String(messageText)
|
|
messageBytes = byte[]
|
|
digestBytes = byte[]
|
|
digestSum = Rexx ''
|
|
|
|
do
|
|
messageBytes = message.getBytes(encoding)
|
|
md = MessageDigest.getInstance(algorithm)
|
|
md.update(messageBytes)
|
|
digestBytes = md.digest
|
|
|
|
loop b_ = 0 to digestBytes.length - 1
|
|
bb = Rexx(digestBytes[b_]).d2x(2)
|
|
if lowercase then digestSum = digestSum || bb.lower
|
|
else digestSum = digestSum || bb.upper
|
|
end b_
|
|
catch ex = Exception
|
|
ex.printStackTrace
|
|
end
|
|
|
|
return digestSum
|