def cryptArray(data: bytes, seed: int, start: int, end: int): result = bytes() step = seed for i in range(start, end, 2): step = uint(step * 0x41C64E6D + 0x6073) result += crypt(data[i:i + 2], step >> 16) step = seed if (len(data) > end): for i in range(end, len(data), 2): step = uint(step * 0x41C64E6D + 0x6073) result += crypt(data[i:i + 2], step >> 16) return result
def initialize(self): self.sfmt.append(self.seed) for i in range(1, 624): y = 0x6C078965 * (self.sfmt[i - 1] ^ (self.sfmt[i - 1] >> 30)) + i self.sfmt.append(uint(y)) self.periodCertificaion()
def initialize(self): self.sfmt.append(self.seed) for i in range(1, 624): y = 0x6C078965 * (self.sfmt[i - 1] ^ (self.sfmt[i - 1] >> 30)) + i self.sfmt.append(uint(y)) inner = self.seed & 1 inner ^= self.sfmt[3] & 0x13c9e684 inner ^= inner >> 16 inner ^= inner >> 8 inner ^= inner >> 4 inner ^= inner >> 2 inner ^= inner >> 1 self.sfmt[0] ^= ~inner & 1
def shuffle(self): a = 0 b = 488 c = 616 d = 620 while a < 624: self.sfmt[a + 3] = self.sfmt[a + 3] ^ (uint(self.sfmt[a + 3] << 8)) ^ ( self.sfmt[a + 2] >> 24) ^ (self.sfmt[c + 3] >> 8) ^ ( (self.sfmt[b + 3] >> 11) & 0xbffffff6) ^ (uint(self.sfmt[d + 3] << 18)) self.sfmt[a + 2] = self.sfmt[a + 2] ^ ( uint(self.sfmt[a + 2] << 8)) ^ (self.sfmt[a + 1] >> 24) ^ ( uint(self.sfmt[c + 3] << 24)) ^ (self.sfmt[c + 2] >> 8) ^ ( (self.sfmt[b + 2] >> 11) & 0xbffaffff) ^ (uint(self.sfmt[d + 2] << 18)) self.sfmt[a + 1] = self.sfmt[a + 1] ^ ( uint(self.sfmt[a + 1] << 8)) ^ (self.sfmt[a] >> 24) ^ ( uint(self.sfmt[c + 2] << 24)) ^ (self.sfmt[c + 1] >> 8) ^ ( (self.sfmt[b + 1] >> 11) & 0xddfecb7f) ^ (uint(self.sfmt[d + 1] << 18)) self.sfmt[a] = self.sfmt[a] ^ (uint(self.sfmt[a] << 8)) ^ ( uint(self.sfmt[c + 1] << 24)) ^ (self.sfmt[c] >> 8) ^ ( (self.sfmt[b] >> 11) & 0xdfffffef) ^ (uint(self.sfmt[d] << 18)) c = d d = a a += 4 b += 4 if (b >= 624): b = 0 self.index = 0
def initialize(self): self.mt.append(self.seed) for i in range(1, 624): y = 0x6C078965 * (self.mt[i - 1] ^ (self.mt[i - 1] >> 30)) + i self.mt.append(uint(y))