+++ /dev/null
-import string\r
-import md5\r
-from sys import argv\r
-\r
-def MDPrint(str):\r
- outstr = ''\r
- for i in str:\r
- o = ord(i)\r
- outstr = (outstr\r
- + string.hexdigits[(o >> 4) & 0xF]\r
- + string.hexdigits[o & 0xF])\r
- print outstr,\r
-\r
-\r
-from time import time\r
-\r
-def makestr(start, end):\r
- result = ''\r
- for i in range(start, end + 1):\r
- result = result + chr(i)\r
-\r
- return result\r
-\r
-\r
-def MDTimeTrial():\r
- TEST_BLOCK_SIZE = 1000\r
- TEST_BLOCKS = 10000\r
-\r
- TEST_BYTES = TEST_BLOCK_SIZE * TEST_BLOCKS\r
-\r
- # initialize test data, need temporary string filler\r
-\r
- filsiz = 1 << 8\r
- filler = makestr(0, filsiz-1)\r
- data = filler * (TEST_BLOCK_SIZE // filsiz)\r
- data = data + filler[:(TEST_BLOCK_SIZE % filsiz)]\r
-\r
- del filsiz, filler\r
-\r
-\r
- # start timer\r
- print 'MD5 time trial. Processing', TEST_BYTES, 'characters...'\r
- t1 = time()\r
-\r
- mdContext = md5.new()\r
-\r
- for i in range(TEST_BLOCKS):\r
- mdContext.update(data)\r
-\r
- str = mdContext.digest()\r
- t2 = time()\r
-\r
- MDPrint(str)\r
- print 'is digest of test input.'\r
- print 'Seconds to process test input:', t2 - t1\r
- print 'Characters processed per second:', TEST_BYTES / (t2 - t1)\r
-\r
-\r
-def MDString(str):\r
- MDPrint(md5.new(str).digest())\r
- print '"' + str + '"'\r
-\r
-\r
-def MDFile(filename):\r
- f = open(filename, 'rb')\r
- mdContext = md5.new()\r
-\r
- while 1:\r
- data = f.read(1024)\r
- if not data:\r
- break\r
- mdContext.update(data)\r
-\r
- MDPrint(mdContext.digest())\r
- print filename\r
-\r
-\r
-import sys\r
-\r
-def MDFilter():\r
- mdContext = md5.new()\r
-\r
- while 1:\r
- data = sys.stdin.read(16)\r
- if not data:\r
- break\r
- mdContext.update(data)\r
-\r
- MDPrint(mdContext.digest())\r
- print\r
-\r
-\r
-def MDTestSuite():\r
- print 'MD5 test suite results:'\r
- MDString('')\r
- MDString('a')\r
- MDString('abc')\r
- MDString('message digest')\r
- MDString(makestr(ord('a'), ord('z')))\r
- MDString(makestr(ord('A'), ord('Z'))\r
- + makestr(ord('a'), ord('z'))\r
- + makestr(ord('0'), ord('9')))\r
- MDString((makestr(ord('1'), ord('9')) + '0') * 8)\r
-\r
- # Contents of file foo are "abc"\r
- MDFile('foo')\r
-\r
-\r
-# I don't wanna use getopt(), since I want to use the same i/f...\r
-def main():\r
- if len(argv) == 1:\r
- MDFilter()\r
- for arg in argv[1:]:\r
- if arg[:2] == '-s':\r
- MDString(arg[2:])\r
- elif arg == '-t':\r
- MDTimeTrial()\r
- elif arg == '-x':\r
- MDTestSuite()\r
- else:\r
- MDFile(arg)\r
-\r
-main()\r