|
| 1 | +vars = ["a", "b", "c", "d", "e"] |
1 | 2 | for j in xrange(0, 80):
|
| 3 | + a, b, c, d, e = vars[-j % 5:] + vars[:-j % 5] # rotate var array |
2 | 4 | if j < 20:
|
3 |
| - f = "(b & c) | ((~b) & d)" |
| 5 | + f = "(%s & %s) | ((~%s) & %s)" % (b, c, b, d) |
4 | 6 | k = 0x5A827999
|
5 | 7 | elif j < 40:
|
6 |
| - f = "b ^ c ^ d" |
| 8 | + f = "%s ^ %s ^ %s" % (b, c, d) |
7 | 9 | k = 0x6ED9EBA1
|
8 | 10 | elif j < 60:
|
9 |
| - f = "(b & c) | (b & d) | (c & d)" |
| 11 | + f = "(%s & %s) | (%s & %s) | (%s & %s)" % (b, c, b, d, c, d) |
10 | 12 | k = 0x8F1BBCDC
|
11 | 13 | else:
|
12 |
| - f = "b ^ c ^ d" |
| 14 | + f = "%s ^ %s ^ %s" % (b, c, d) |
13 | 15 | k = 0xCA62C1D6
|
14 | 16 | if j < 16:
|
15 |
| - print "var w%s:uint = byteInput.readUnsignedInt();" % j |
16 |
| - print "tmp = ((a << 5) | (a >>> 27)) + (%s) + e + 0x%08X + w%s; " \ |
17 |
| - "e = d; " \ |
18 |
| - "d = c; " \ |
19 |
| - "c = (b << 30) | (b >>> 2); " \ |
20 |
| - "b = a; " \ |
21 |
| - "a = tmp;" % (f, k, j % 16) |
| 17 | + print "var w%02d:uint = byteInput.readUnsignedInt();" % j, |
| 18 | + w_access = "w%02d" % (j % 16) |
22 | 19 | else:
|
23 |
| - print "w%s ^= w%s ^ w%s ^ w%s;" % (j % 16, (j - 3) % 16, (j - 8) % 16, (j - 14) % 16) |
24 |
| - print "tmp = ((a << 5) | (a >>> 27)) + (%s) + e + 0x%08X + (w%s = (w%s << 1) | (w%s >>> 31)); " \ |
25 |
| - "e = d; " \ |
26 |
| - "d = c; " \ |
27 |
| - "c = (b << 30) | (b >>> 2); " \ |
28 |
| - "b = a; " \ |
29 |
| - "a = tmp;" % (f, k, j % 16, j % 16, j % 16) |
| 20 | + print "w%02d ^= w%02d ^ w%02d ^ w%02d;" % (j % 16, (j - 3) % 16, (j - 8) % 16, (j - 14) % 16), |
| 21 | + w_access = "(w%02d = (w%02d << 1) | (w%02d >>> 31))" % (j % 16, j % 16, j % 16) |
| 22 | + print "%s += ((%s << 5) | (%s >>> 27)) + (%s) + 0x%08X + %s;" % ( |
| 23 | + e, a, a, f, k, w_access), |
| 24 | + print "%s = (%s << 30) | (%s >>> 2);" % (b, b, b) |
0 commit comments