Staging
v0.5.1
v0.5.1
https://github.com/python/cpython
Tip revision: 1da43e5e916949c8e849e656d9d05fa4b9d6836c authored by Benjamin Peterson on 26 June 2009, 13:21:52 UTC
rearrange the sections of the README, so they'll hopefully be more in the order people will interested in
rearrange the sections of the README, so they'll hopefully be more in the order people will interested in
Tip revision: 1da43e5
md5driver.py
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, end=' ')
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()