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