' def __call__(self,key=[0]*32,nonce=[0]*8,block_counter=[0]*8): ' assert len(key) == 32 ' assert len(nonce) == 8 ' assert len(block_counter) == 8 ' # init state 计次循环首(8, i) 加入成员(k, _littleendian(取字节集中间(key,(i - 1) × 4 + 1, 4))) 计次循环尾() ' k = [self._littleendian(key[4*i:4*i+4]) for i in xrange(8)] 计次循环首(2, i) 加入成员(n, _littleendian(取字节集中间(nonce,(i - 1) × 4 + 1, 4))) 计次循环尾() ' 调试输出 (“n”, n) ' n = [self._littleendian(nonce[4*i:4*i+4]) for i in xrange(2)] 计次循环首(2, i) 加入成员(b, _littleendian(取字节集中间(block_counter,(i - 1) × 4 + 1, 4))) 计次循环尾() ' 调试输出 (“b”, b) ' b = [self._littleendian(block_counter[4*i:4*i+4]) for i in xrange(2)] c = { 1634760805, 857760878, 2036477234, 1797285236 } ' c = [0x61707865, 0x3320646e, 0x79622d32, 0x6b206574] 重定义数组(s, 假, 16) s [1] = c [0 + 1] s [2] = k [0 + 1] s [3] = k [1 + 1] s [4] = k [2 + 1] s [5] = k [3 + 1] s [6] = c [1 + 1] s [7] = n [0 + 1] s [8] = n [1 + 1] s [9] = b [0 + 1] s [10] = b [1 + 1] s [11] = c [2 + 1] s [12] = k [4 + 1] s [13] = k [5 + 1] s [14] = k [6 + 1] s [15] = k [7 + 1] s [16] = c [3 + 1] ' s = [c[0], k[0], k[1], k[2], ' k[3], c[1], n[0], n[1], ' b[0], b[1], c[2], k[4], ' k[5], k[6], k[7], c[3]] ' # the state ' 调试输出 (s) self._s = s ' self._s = s[:] 计次循环首(self._r, ) _round() 计次循环尾() ' for i in xrange(self._r): ' self._round() ' # add initial state to the final one 计次循环首(16, i) self._s [i] = 位与_(self._s [i] + s [i], self._mask) 计次循环尾() ' self._s = [(self._s[i] + s[i]) & self._mask for i in xrange(16)] 结果数组 = self._s 返回(取数组成员数(结果数组)) ' 返回 (self._s) ' return self._s