【密码学】一文读懂BBS

简介: 之前聊过不少非密码学安全的伪随机数生成算法,这次呢,咱们来聊一个密码学安全的伪随机数生成器 「BBS」 ,这个是三位设计者的首字母: Blum、Blum 和 Shub。

【密码学】一文读懂BBS


4JOQ%`99TTSPEG@`VMUJ0CR.jpg

之前聊过不少非密码学安全的伪随机数生成算法,这次呢,咱们来聊一个密码学安全的伪随机数生成器 「BBS」 ,这个是三位设计者的首字母: Blum、Blum 和 Shub。


生成器结构

%5TMWL0_A7{A0Q291RESVDH.png

BBS结构

首先BBS需要选择两个素数p和q,并且使得

image.png

简单解释一下上面这个式子吧,也就是说p和q同余与4模3,大白话就是p和q在除以4的时候余数都是3。

然后,令 ,之后选择一个随机数s作为种子,这里对于种子有个要求,要求s和n互素。

然后按照如下的方式产生随机序列:

image.png

好了,这篇文章依然很短,因为这个算法结构实际上并不复杂,如果想去看原理的,可以去参考文末参考资料当中的paper。


代码实现

这个代码实际上写起来也比较简单,这里我偷懒了,没用大数,直接用的uint

Go

package bbs
type BBS struct {
  p uint
  q uint
  x uint
  n uint
}
func New(p, q uint) *BBS {
  return &BBS{
    p,
    q,
    0,
    p * q,
  }
}
func (b *BBS) Seed(seed uint) {
  b.x = (seed * seed) % b.n
}
func (b *BBS) Rand() uint {
  x := (b.x * b.x) % b.n
  return x
}

Rust

struct BBS {
    p: u32,
    q: u32,
    x: u32,
    n: u32,
}
impl BBS {
    pub fn new(p: u32, q: u32, seed: u32) -> BBS {
        let n = p * q;
        let x = seed.wrapping_mul(seed) % n;
        BBS { p, q, x, n }
    }
    pub fn rand(&mut self) -> u32 {
        self.x = self.x.wrapping_mul(self.x) % self.n;
        return self.x;
    }
}


相关文章
|
XML 编解码 Java
Spring Boot 中的 RestTemplate和Retrofit 插件很好
Spring Boot 中的 RestTemplate和Retrofit 插件很好
841 1
|
11月前
|
算法 安全 量子技术
“RSA还能撑多久?”——聊聊量子计算下密码学的危与机
“RSA还能撑多久?”——聊聊量子计算下密码学的危与机
703 0
|
10月前
|
Apache 数据安全/隐私保护 Docker
【开源问答系统】GitHub 14.9k star 的开源问答引擎来了,三分钟搭建完成~~~
Apache Answer 是一款开源问答系统,助力团队将零散知识沉淀为结构化资产。支持 Docker 快速部署、插件扩展、权限控制与多语言,兼具高效搜索、投票排序与私有化部署能力,适用于技术社区、企业知识库与用户支持场景。
1166 22
|
10月前
|
人工智能 程序员 开发者
2025年程序员如何挣钱?卓伊凡的七条职业发展路径分析-优雅草卓伊凡
2025年程序员如何挣钱?卓伊凡的七条职业发展路径分析-优雅草卓伊凡
575 6
|
敏捷开发 前端开发 测试技术
软件开发工作流【详解】(含公司产品研发流程图、大厂研发架构图、大厂研发流程图)
软件开发工作流【详解】(含公司产品研发流程图、大厂研发架构图、大厂研发流程图)
12199 1
|
存储 分布式数据库 数据库
Hbase学习二:Hbase数据特点和架构特点
Hbase学习二:Hbase数据特点和架构特点
811 0
|
NoSQL Java 关系型数据库
这个评论系统设计碉堡了
先赞后看,南哥助你Java进阶一大半官网给出了Facebook评论系统的高级设计图,Facebook的评论竟然是支持实时刷新的。也就是说用户不用刷新帖子,只要帖子有新的评论就会自动推送到用户端,这里Facebook使用的便是每天在全球有设备在使用的WebSocket技术。我是南哥,一个Java学习与进阶的领路人。相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
1028 5
这个评论系统设计碉堡了
|
Rust 搜索推荐 算法
【密码学】一文读懂GCM(Golais计数器模式)
GCM(Galois计数器模式)同样的也是NIST提出来的,这个模式基于并行化设计,下面来一起看一下这个模式具体是如何工作的吧。
4062 0
【密码学】一文读懂GCM(Golais计数器模式)
【STM32】通过RTThread驱动W25QXXX
【STM32】通过RTThread驱动W25QXXX
767 0
|
前端开发
Wordpress自定义鼠标样式插件
使用此插件可一键自定义Wordpress前端鼠标指针样式。利用该插件,站长可以快速实现替换多种鼠标指针样式于网站前端。,该插件允许用户一键自定义网站前端的鼠标指针样式,提供多种图案选择。插件资源来源于网络并已开源,无商业性质。包含插件截图和使用教程:用户可从蓝奏云或GitHub下载插件zip文件,然后在WordPress中安装。
409 6

热门文章

最新文章