为了账号安全,请及时绑定邮箱和手机立即绑定

了解Blum Blum Shub算法。(Python实现)

了解Blum Blum Shub算法。(Python实现)

MMMHUHU 2021-03-30 12:08:53
请帮我了解BBS算法。我做了这个实现:class EmptySequenseError(Exception):                                      pass                                                              class BlumBlumShub(object):                                               def __init__(self, length):                                               self.length = length                                                  self.primes = e(1000)  # Primes obtained by my own Sieve of Eratosthenes implementation.                                                                                def get_primes(self):                                                     out_primes = []                                                       while len(out_primes) < 2:                                                curr_prime = self.primes.pop()                      if curr_prime % 4 == 3:                                                   out_primes.append(curr_prime)                                 return out_primes                                                 def set_random_sequence(self):                                            p, q = self.get_primes()                                              m = p * q                                                             self.random_sequence = [((x+1)**2)%m for x in range(self.length)]    def get_random_sequence(self):                                            if self.random_sequence:                                                 return self.random_sequence                                       raise EmptySequenseError("Set random sequence before get it!")我有几个问题。起初我不想使用random库,这太天真了。我的序列在增加,这不是绝对随机的。如何防止返回序列增加?而且我不理解算法描述的这一部分:在算法的每一步,都从x n + 1导出一些输出;输出是常用的任一比特的奇偶校验X n + 1个或一个或多个的至少显著位X n + 1个。请给我解释一下是什么意思?编辑摘要:该算法已得到纠正。引用替换为en.wikipedia引用。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 239 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号