8 + string
.hexdigits
[(o
>> 4) & 0xF] \
9 + string
.hexdigits
[o
& 0xF]
15 def makestr(start
, end
):
17 for i
in range(start
, end
+ 1):
18 result
= result
+ chr(i
)
26 TEST_BLOCK_SIZE
= 1000
29 TEST_BYTES
= TEST_BLOCK_SIZE
* TEST_BLOCKS
31 # initialize test data, need temporary string filler
34 filler
= makestr(0, filsiz
-1)
35 data
= filler
* (TEST_BLOCK_SIZE
/ filsiz
);
36 data
= data
+ filler
[:(TEST_BLOCK_SIZE
% filsiz
)]
42 print 'MD5 time trial. Processing', TEST_BYTES
, 'characters...'
47 for i
in range(TEST_BLOCKS
):
48 mdContext
.update(data
)
50 str = mdContext
.digest()
54 print 'is digest of test input.'
55 print 'Seconds to process test input:', t2
- t1
56 print 'Characters processed per second:', TEST_BYTES
/ (t2
- t1
)
60 MDPrint(md5(str).digest())
65 f
= open(filename
, 'rb');
72 mdContext
.update(data
)
74 MDPrint(mdContext
.digest())
84 data
= sys
.stdin
.read(16)
87 mdContext
.update(data
)
89 MDPrint(mdContext
.digest())
94 print 'MD5 test suite results:'
98 MDString('message digest')
99 MDString(makestr(ord('a'), ord('z')))
100 MDString(makestr(ord('A'), ord('Z')) \
101 + makestr(ord('a'), ord('z')) \
102 + makestr(ord('0'), ord('9')))
103 MDString((makestr(ord('1'), ord('9')) + '0') * 8)
105 # Contents of file foo are "abc"
111 # I don't wanna use getopt(), since I want to use the same i/f...