python类next()的实例源码

auth_chain.py 文件源码 项目:luci-oso21 作者: oso21 项目源码 文件源码 阅读 39 收藏 0 点赞 0 评论 0
def check_and_patch_data_size(self, random):
        # append new item
        # when the biggest item(first time) or the last append item(other time) are not big enough.
        # but set a limit size (64) to avoid stack overflow.
        if self.data_size_list0[-1] < 1300 and len(self.data_size_list0) < 64:
            self.data_size_list0.append((int)(random.next() % 2340 % 2040 % 1440))
            self.check_and_patch_data_size(random)
auth_chain.py 文件源码 项目:luci-oso21 作者: oso21 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def init_data_size(self, key):
        if self.data_size_list0:
            self.data_size_list0 = []
        random = xorshift128plus()
        random.init_from_bin(key)
        # ??????12~24-1
        list_len = random.next() % (8 + 16) + (4 + 8)
        for i in range(0, list_len):
            self.data_size_list0.append((int)(random.next() % 2340 % 2040 % 1440))
        self.data_size_list0.sort()
        old_len = len(self.data_size_list0)
        self.check_and_patch_data_size(random)
        # if check_and_patch_data_size are work, re-sort again.
        if old_len != len(self.data_size_list0):
            self.data_size_list0.sort()
auth_chain.py 文件源码 项目:shadowsocksr 作者: emacsenli 项目源码 文件源码 阅读 37 收藏 0 点赞 0 评论 0
def next(self):
        x = self.v0
        y = self.v1
        self.v0 = y
        x ^= ((x & xorshift128plus.mov_mask) << 23)
        x ^= (y ^ (x >> 17) ^ (y >> 26)) & xorshift128plus.max_int
        self.v1 = x
        return (x + y) & xorshift128plus.max_int
auth_chain.py 文件源码 项目:shadowsocksr 作者: emacsenli 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def init_from_bin_len(self, bin, length):
        bin += b'\0' * 16
        bin = struct.pack('<H', length) + bin[2:]
        self.v0 = struct.unpack('<Q', bin[:8])[0]
        self.v1 = struct.unpack('<Q', bin[8:16])[0]

        for i in range(4):
            self.next()
auth_chain.py 文件源码 项目:shadowsocksr 作者: emacsenli 项目源码 文件源码 阅读 34 收藏 0 点赞 0 评论 0
def rnd_data_len(self, buf_size, last_hash, random):
        if buf_size > 1440:
            return 0
        random.init_from_bin_len(last_hash, buf_size)
        if buf_size > 1300:
            return random.next() % 31
        if buf_size > 900:
            return random.next() % 127
        if buf_size > 400:
            return random.next() % 521
        return random.next() % 1021
auth_chain.py 文件源码 项目:shadowsocksr 作者: emacsenli 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def udp_rnd_data_len(self, last_hash, random):
        random.init_from_bin(last_hash)
        return random.next() % 127
auth_chain.py 文件源码 项目:shadowsocksr 作者: emacsenli 项目源码 文件源码 阅读 33 收藏 0 点赞 0 评论 0
def rnd_start_pos(self, rand_len, random):
        if rand_len > 0:
            return random.next() % 8589934609 % rand_len
        return 0
auth_chain.py 文件源码 项目:shadowsocksrh 作者: hhhizzz 项目源码 文件源码 阅读 38 收藏 0 点赞 0 评论 0
def next(self):
        x = self.v0
        y = self.v1
        self.v0 = y
        x ^= ((x & xorshift128plus.mov_mask) << 23)
        x ^= (y ^ (x >> 17) ^ (y >> 26)) & xorshift128plus.max_int
        self.v1 = x
        return (x + y) & xorshift128plus.max_int
auth_chain.py 文件源码 项目:shadowsocksrh 作者: hhhizzz 项目源码 文件源码 阅读 33 收藏 0 点赞 0 评论 0
def init_from_bin_len(self, bin, length):
        bin += b'\0' * 16
        bin = struct.pack('<H', length) + bin[2:]
        self.v0 = struct.unpack('<Q', bin[:8])[0]
        self.v1 = struct.unpack('<Q', bin[8:16])[0]

        for i in range(4):
            self.next()
auth_chain.py 文件源码 项目:shadowsocksrh 作者: hhhizzz 项目源码 文件源码 阅读 36 收藏 0 点赞 0 评论 0
def rnd_data_len(self, buf_size, last_hash, random):
        if buf_size > 1440:
            return 0
        random.init_from_bin_len(last_hash, buf_size)
        if buf_size > 1300:
            return random.next() % 31
        if buf_size > 900:
            return random.next() % 127
        if buf_size > 400:
            return random.next() % 521
        return random.next() % 1021
auth_chain.py 文件源码 项目:shadowsocksrh 作者: hhhizzz 项目源码 文件源码 阅读 37 收藏 0 点赞 0 评论 0
def udp_rnd_data_len(self, last_hash, random):
        random.init_from_bin(last_hash)
        return random.next() % 127
auth_chain.py 文件源码 项目:shadowsocksrh 作者: hhhizzz 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def rnd_start_pos(self, rand_len, random):
        if rand_len > 0:
            return random.next() % 8589934609 % rand_len
        return 0
auth_chain.py 文件源码 项目:ShadowSocksShare-OpenShift 作者: the0demiurge 项目源码 文件源码 阅读 28 收藏 0 点赞 0 评论 0
def next(self):
        x = self.v0
        y = self.v1
        self.v0 = y
        x ^= ((x & xorshift128plus.mov_mask) << 23)
        x ^= (y ^ (x >> 17) ^ (y >> 26)) & xorshift128plus.max_int
        self.v1 = x
        return (x + y) & xorshift128plus.max_int
auth_chain.py 文件源码 项目:ShadowSocksShare-OpenShift 作者: the0demiurge 项目源码 文件源码 阅读 42 收藏 0 点赞 0 评论 0
def init_from_bin_len(self, bin, length):
        bin += b'\0' * 16
        bin = struct.pack('<H', length) + bin[2:]
        self.v0 = struct.unpack('<Q', bin[:8])[0]
        self.v1 = struct.unpack('<Q', bin[8:16])[0]

        for i in range(4):
            self.next()
auth_chain.py 文件源码 项目:ShadowSocksShare-OpenShift 作者: the0demiurge 项目源码 文件源码 阅读 33 收藏 0 点赞 0 评论 0
def rnd_data_len(self, buf_size, last_hash, random):
        if buf_size > 1440:
            return 0
        random.init_from_bin_len(last_hash, buf_size)
        if buf_size > 1300:
            return random.next() % 31
        if buf_size > 900:
            return random.next() % 127
        if buf_size > 400:
            return random.next() % 521
        return random.next() % 1021
auth_chain.py 文件源码 项目:ShadowSocksShare-OpenShift 作者: the0demiurge 项目源码 文件源码 阅读 41 收藏 0 点赞 0 评论 0
def udp_rnd_data_len(self, last_hash, random):
        random.init_from_bin(last_hash)
        return random.next() % 127
auth_chain.py 文件源码 项目:ShadowSocksShare-OpenShift 作者: the0demiurge 项目源码 文件源码 阅读 32 收藏 0 点赞 0 评论 0
def rnd_start_pos(self, rand_len, random):
        if rand_len > 0:
            return random.next() % 8589934609 % rand_len
        return 0


问题


面经


文章

微信
公众号

扫码关注公众号