Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from __future__ import print_function # PEP 3105
- import numpy as np
- # max bits > 0 == width of the value in bits (e.g., int_16 -> 16)
- # Rotate left: 0b1001 --> 0b0011
- rol = lambda val, r_bits, max_bits: \
- (val << r_bits%max_bits) & (2**max_bits-1) | \
- ((val & (2**max_bits-1)) >> (max_bits-(r_bits%max_bits)))
- # Rotate right: 0b1001 --> 0b1100
- ror = lambda val, r_bits, max_bits: \
- ((val & (2**max_bits-1)) >> r_bits%max_bits) | \
- (val << (max_bits-(r_bits%max_bits)) & (2**max_bits-1))
- max_bits = 32 # For fun, try 2, 17 or other arbitrary (positive!) values
- k_1 = 0x67452301
- k_2 = 0xEFCDAB89
- k_3 = 0x98BADCFE
- k_4 = 0x10325476
- login = '111122223333444455556666777788889999aaaabbbbccccddddeeeeffff1234'
- logp = np.empty(16, dtype = 'int')
- for i in range(0, 16):
- for j in range(0, 4):
- if j == 0:
- logp[i] = int(hex(ord(login[4*i + j])), 16)
- else:
- logp[i] = logp[i] * 16*16 + int(hex(ord(login[4*i + j])), 16)
- v6 = rol((logp[1-1] + (k_2 & k_3 | k_4 & (~k_2 & 0xffffffff)) + k_1 - 680876936)&0x0ffffffff,7, max_bits)
- v7 = (k_2 + v6)&0x0ffffffff
- v10 = rol((logp[2-1] + (v7 & k_2 | k_3 & (~v7 & 0xffffffff)) + k_4 - 389564586)&0x0ffffffff, 12, max_bits)
- v11 = (v7 + v10)&0x0ffffffff
- v12 = ror((logp[3-1] + (v7 & v11 | k_2 & (~v11 & 0xffffffff)) + k_3 + 606105819)&0x0ffffffff, 15, max_bits)
- v13 = (v11 + v12)&0x0ffffffff
- v15 = ror(logp[4-1] + (v13 & v11 | v7 & (~v13 & 0xffffffff)) + k_2 - 1044525330, 10, max_bits)
- v16 = (v13 + v15)&0x0ffffffff
- v17 = rol(logp[5-1] + (v16 & v13 | v11 & (~v16 & 0xffffffff)) + v7 - 176418897, 7, max_bits)
- v18 = (v16 + v17)&0x0ffffffff
- v21 = rol(logp[6-1] + (v18 & v16 | v13 & (~v18 & 0xffffffff)) + v11 + 1200080426, 12, max_bits)
- v22 = (v16 + v17 + v21)&0x0ffffffff
- v24 = ror(logp[7-1] + ((v16 + v17) & v22 | v16 & (~v22 & 0xffffffff)) + v13 - 1473231341, 15, max_bits)
- v25 = (v22 + v24)&0x0ffffffff
- v26 = ror(logp[8-1] + (v25 & v22 | v18 & (~v25 & 0xffffffff)) + v16 - 45705983, 10, max_bits)
- v27 = (v25 + v26)&0x0ffffffff
- v30 = rol(logp[9-1] + (v27 & v25 | v22 & (~v27 & 0xffffffff)) + v18 + 1770035416, 7, max_bits)
- v31 = (v27 + v30)&0x0ffffffff
- v34 = rol(logp[10-1] + (v31 & v27 | v25 & (~v31 & 0xffffffff)) + v22 - 1958414417, 12, max_bits)
- v35 = (v31 + v34)&0x0ffffffff
- v37 = ror(logp[11-1] + (v31 & v35 | v27 & (~v35 & 0xffffffff)) + v25 - 42063, 15, max_bits)
- v38 = (v35 + v37)&0x0ffffffff
- v39 = ror(logp[12-1] + (v38 & v35 | v31 & (~v38 & 0xffffffff)) + v27 - 1990404162, 10, max_bits)
- v40 = (v38 + v39)&0x0ffffffff
- v41 = v38
- v42 = rol(logp[13-1] + (v40 & v38 | v35 & (~v40 & 0xffffffff)) + v31 + 1804603682, 7, max_bits)
- v43 = (v40 + v42)&0x0ffffffff
- v48 = rol(logp[14-1] + (v43 & v40 | v41 & (~v43 & 0xffffffff)) + v35 - 40341101, 12, max_bits)
- v49 = (v43 + v48)&0x0ffffffff
- v50 = logp[15-1]
- v51 = (logp[15-1] + (v43 & v49 | v40 & (~v49 & 0xffffffff)) + v41 - 1502002290)&0x0ffffffff
- v52 = logp[16-1]
- v51 = ror(v51, 15, max_bits)
- v53 = (v49 + v51)&0x0ffffffff
- v54 = ror(logp[16-1] + (v53 & v49 | v43 & (~v53 & 0xffffffff)) + v40 + 1236535329, 10, max_bits)
- v55 = (v53 + v54)&0x0ffffffff
- v56 = rol(logp[2-1] + (v55 & v49 | v53 & (~v49 & 0xffffffff)) + v43 - 165796510, 5, max_bits)
- v57 = (v55 + v56)&0x0ffffffff
- v58 = rol(logp[7-1] + (v57 & v53 | v55 & (~v53 & 0xffffffff)) + v49 - 1069501632, 9, max_bits)
- v59 = (v57 + v58)&0x0ffffffff
- v60 = rol(logp[12-1] + (v55 & v59 | v57 & (~v55 & 0xffffffff)) + v53 + 643717713, 14, max_bits)
- v61 = (v59 + v60)&0x0ffffffff
- v62 = ror(logp[1-1] + (v57 & v61 | v59 & (~v57 & 0xffffffff)) + v55 - 373897302, 12, max_bits)
- v63 = (v61 + v62)&0x0ffffffff
- v64 = rol(logp[6-1] + (v63 & v59 | v61 & (~v59 & 0xffffffff)) + v57 - 701558691, 5, max_bits)
- v65 = (v63 + v64)&0x0ffffffff
- v66 = rol(logp[11-1] + ((v63 + v64) & v61 | v63 & (~v61 & 0xffffffff)) + v59 + 38016083, 9, max_bits)
- v67 = (v63 + v64 + v66)&0x0ffffffff
- v68 = rol(logp[16-1] + (v63 & v67 | (v63 + v64) & (~v63 & 0xffffffff)) + v61 - 660478335, 14, max_bits)
- v69 = (v67 + v68)&0x0ffffffff
- v70 = ror(logp[5-1] + ((v63 + v64) & v69 | v67 & ~(v63 + v64)) + v63 - 405537848, 12, max_bits)
- v71 = (v69 + v70)&0x0ffffffff
- v72 = rol(logp[10-1] + (v71 & v67 | v69 & (~v67 & 0xffffffff)) + v65 + 568446438, 5, max_bits)
- v73 = (v50 + ((v71 + v72) & v69 | v71 & (~v69 & 0xffffffff)) + v67 - 1019803690)&0x0ffffffff
- v74 = (v71 + v72)&0x0ffffffff
- v73 = rol(v73, 9, max_bits)
- v75 = (v74 + v73)&0x0ffffffff
- v76 = rol(logp[4-1] + (v71 & v75 | v74 & (~v71 & 0xffffffff)) + v69 - 187363961, 14, max_bits)
- v77 = (v75 + v76)&0x0ffffffff
- v78 = ror(logp[9-1] + (v74 & v77 | v75 & (~v74 & 0xffffffff)) + v71 + 1163531501, 12, max_bits)
- v79 = (v77 + v78)&0x0ffffffff
- v80 = rol(logp[14-1] + (v79 & v75 | v77 & (~v75 & 0xffffffff)) + v74 - 1444681467, 5, max_bits)
- v81 = (logp[3-1] + ((v79 + v80) & v77 | v79 & (~v77 & 0xffffffff)) + v75 - 51403784)&0x0ffffffff
- v82 = (v79 + v80)&0x0ffffffff
- v81 = rol(v81, 9, max_bits)&0x0ffffffff
- v83 = (v82 + v81)&0x0ffffffff
- v84 = rol(logp[8-1] + (v79 & v83 | v82 & (~v79 & 0xffffffff)) + v77 + 1735328473, 14, max_bits)
- v85 = (v83 + v84)&0x0ffffffff
- v86 = ror(logp[13-1] + (v82 & v85 | v83 & (~v82 & 0xffffffff)) + v79 - 1926607734, 12, max_bits)
- v87 = (v85 + v86)&0x0ffffffff
- v88 = rol(logp[6-1] + (v87 ^ v85 ^ v83) + v82 - 378558, 4, max_bits)
- v89 = (v87 + v88)&0x0ffffffff
- v90 = rol(logp[9-1] + (v89 ^ v87 ^ v85) + v83 - 2022574463, 11, max_bits)
- v91 = (v89 + v90)&0x0ffffffff
- v92 = rol(logp[12-1] + (v89 ^ v87 ^ v91) + v85 + 1839030562, 16, max_bits)
- v93 = (v91 + v92)&0x0ffffffff
- v94 = ror(v50 + (v89 ^ v93 ^ v91) + v87 - 35309556, 9, max_bits)
- v95 = (v93 + v94)&0x0ffffffff
- v96 = rol(logp[2-1] + (v95 ^ v93 ^ v91) + v89 - 1530992060, 4, max_bits)
- v97 = (v95 + v96)&0x0ffffffff
- v98 = rol(logp[5-1] + (v97 ^ v95 ^ v93) + v91 + 1272893353, 11, max_bits)
- v99 = (v97 + v98)&0x0ffffffff
- v100 = rol(logp[8-1] + (v97 ^ v95 ^ v99) + v93 - 155497632, 16, max_bits)
- v101 = (v99 + v100)&0x0ffffffff
- v102 = ror(logp[11-1] + (v97 ^ v101 ^ v99) + v95 - 1094730640, 9, max_bits)
- v103 = (v101 + v102)&0x0ffffffff
- v104 = rol(logp[14-1] + (v103 ^ v101 ^ v99) + v97 + 681279174, 4, max_bits)
- v105 = (v103 + v104)&0x0ffffffff
- v106 = rol(logp[1-1] + (v105 ^ v103 ^ v101) + v99 - 358537222, 11, max_bits)
- v107 = (v105 + v106)&0x0ffffffff
- v108 = rol(logp[4-1] + (v105 ^ v103 ^ v107) + v101 - 722521979, 16, max_bits)
- v109 = (v107 + v108)&0x0ffffffff
- v110 = ror(logp[7-1] + (v105 ^ v109 ^ v107) + v103 + 76029189, 9, max_bits)
- v111 = (v109 + v110)&0x0ffffffff
- v112 = rol(logp[10-1] + (v111 ^ v109 ^ v107) + v105 - 640364487, 4, max_bits)
- v113 = (v111 + v112)&0x0ffffffff
- v114 = rol(logp[13-1] + (v113 ^ v111 ^ v109) + v107 - 421815835, 11, max_bits)
- v115 = (v113 + v114)&0x0ffffffff
- v116 = rol(v52 + (v113 ^ v111 ^ v115) + v109 + 530742520, 16, max_bits)
- v117 = (v115 + v116)&0x0ffffffff
- v118 = ror(logp[3-1] + (v113 ^ v117 ^ v115) + v111 - 995338651, 9, max_bits)
- v119 = (v117 + v118)&0x0ffffffff
- v120 = rol(logp[1-1] + (v117 ^ (v119 | (~v115 & 0xffffffff))) + v113 - 198630844, 6, max_bits)
- v121 = (v119 + v120)&0x0ffffffff
- v122 = rol(logp[8-1] + (v119 ^ (v121 | (~v117 & 0xffffffff))) + v115 + 1126891415, 10, max_bits)
- v123 = (v121 + v122)&0x0ffffffff
- v124 = rol(v50 + (v121 ^ (v123 | (~v119 & 0xffffffff))) + v117 - 1416354905, 15, max_bits)
- v125 = (v123 + v124)&0x0ffffffff
- v126 = ror(logp[6-1] + (v123 ^ (v125 | (~v121 & 0xffffffff))) + v119 - 57434055, 11, max_bits)
- v127 = (v125 + v126)&0x0ffffffff
- v128 = rol(logp[13-1] + (v125 ^ (v127 | (~v123 & 0xffffffff))) + v121 + 1700485571, 6, max_bits)
- v129 = (v127 + v128)&0x0ffffffff
- v130 = rol(logp[4-1] + (v127 ^ (v129 | (~v125 & 0xffffffff))) + v123 - 1894986606, 10, max_bits)
- v131 = (v129 + v130)&0x0ffffffff
- v132 = rol(logp[11-1] + (v129 ^ (v131 | (~v127 & 0xffffffff))) + v125 - 1051523, 15, max_bits)
- v133 = (v131 + v132)&0x0ffffffff
- v134 = ror(logp[2-1] + (v131 ^ (v133 | (~v129 & 0xffffffff))) + v127 - 2054922799, 11, max_bits)
- v135 = (v133 + v134)&0x0ffffffff
- v136 = rol(logp[9-1] + (v133 ^ (v135 | (~v131 & 0xffffffff))) + v129 + 1873313359, 6, max_bits)
- v137 = (v135 + v136)&0x0ffffffff
- v138 = rol(v52 + (v135 ^ (v137 | (~v133 & 0xffffffff))) + v131 - 30611744, 10, max_bits)
- v139 = (v137 + v138)&0x0ffffffff
- v140 = rol(logp[7-1] + (v137 ^ (v139 | (~v135 & 0xffffffff))) + v133 - 1560198380, 15, max_bits)
- v141 = (v139 + v140)&0x0ffffffff
- v142 = ror(logp[14-1] + (v139 ^ (v141 | (~v137 & 0xffffffff))) + v135 + 1309151649, 11, max_bits)
- v143 = (v141 + v142)&0x0ffffffff
- v144 = rol(logp[5-1] + (v141 ^ (v143 | (~v139 & 0xffffffff))) + v137 - 145523070, 6, max_bits)
- v145 = (v143 + v144)&0x0ffffffff
- v146 = rol(logp[12-1] + (v143 ^ (v145 | (~v141 & 0xffffffff))) + v139 - 1120210379, 10, max_bits)
- v147 = (v145 + v146)&0x0ffffffff
- v149 = rol(logp[3-1] + (v145 ^ (v147 | (~v143 & 0xffffffff))) + v141 + 718787259, 15, max_bits)
- v150 = (v147 + v149)&0x0ffffffff
- k_1 += v145
- v151 = ror(logp[10-1] + (v147 ^ (v150 | (~v145 & 0xffffffff))) + v143 - 343485551, 11, max_bits)
- k_2 += (v150 + v151)&0x0ffffffff
- k_3 += v150
- result = v147 + k_4
- k_4 = result
Add Comment
Please, Sign In to add comment