###
### Generate test vectors for universal hashing.
+import sys as SYS
+if SYS.version_info >= (3,): xrange = range
+
MOD = 0x104c11db7
def gfmul(x, y):
def hashtest(k, m):
h = k
for ch in m: h = gfmul(h ^ ord(ch), k)
- print ' 0x%08x "%s" 0x%08x;' % (k, m, h)
+ print(' 0x%08x "%s" 0x%08x;' % (k, m, h))
-print '''\
+print('''\
### Test vectors for universal hashing
### [generated]
-hash {'''
+hash {''')
for k, m in [(0x00000000, 'anything you like'),
(0x12345678, 'an exaple test string'),
hashtest(k, "If we don't succeed, we run the risk of failure.")
k = gfmul(k, m)
-print '}'
+print('}')
import sys as SYS
import random as R
+if SYS.version_info >= (3,): xrange = range
+
NVEC = 64
WD = 64
LIMIT = 1 << WD
else: SEED = int(seed, 0)
R.seed(SEED)
-print '### Test vectors for 64-bit arithmetic macros'
-print '### [generated; seed = 0x%08x]' % SEED
+print('### Test vectors for 64-bit arithmetic macros')
+print('### [generated; seed = 0x%08x]' % SEED)
def rol(x, n): return ((x << n) | (x >> (WD - n))) & MASK
def ror(x, n): return ((x >> n) | (x << (WD - n))) & MASK
-def put(x): return '%0*x' % (WD/4, x)
+def put(x): return '%0*x' % (WD//4, x)
for name, func in [('lsl', lambda x, n: x << n),
('lsr', lambda x, n: x >> n),
('rol', rol),
('ror', ror)]:
- print '\n%s64 {' % name
+ print('\n%s64 {' % name)
for i in xrange(NVEC):
x = R.randrange(LIMIT)
sh = R.randrange(0, 70) & 63
- print ' %s %2d %s;' % (put(x), sh, put(func(x, sh) & MASK))
+ print(' %s %2d %s;' % (put(x), sh, put(func(x, sh) & MASK)))
for i in xrange(4):
x = R.randrange(LIMIT)
sh = 32
- print ' %s %2d %s;' % (put(x), sh, put(func(x, sh) & MASK))
- print '}'
+ print(' %s %2d %s;' % (put(x), sh, put(func(x, sh) & MASK)))
+ print('}')
for name, func in [('add', lambda x, y: x + y),
('sub', lambda x, y: x - y)]:
- print '\n%s64 {' % name
+ print('\n%s64 {' % name)
for i in xrange(NVEC):
x = R.randrange(LIMIT)
y = R.randrange(LIMIT)
- print ' %s %s %s;' % (put(x), put(y), put(func(x, y) & MASK))
- print '}'
+ print(' %s %s %s;' % (put(x), put(y), put(func(x, y) & MASK)))
+ print('}')