/* 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 ''messageText'' say Rexx('<'algorithm'>').right(12) || digestSum'' say Rexx('').right(12) || verifyCheck'' 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