【密码学】一文读懂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 插件很好
870 1
|
算法 安全 量子技术
“RSA还能撑多久?”——聊聊量子计算下密码学的危与机
“RSA还能撑多久?”——聊聊量子计算下密码学的危与机
744 0
|
11月前
|
Apache 数据安全/隐私保护 Docker
【开源问答系统】GitHub 14.9k star 的开源问答引擎来了,三分钟搭建完成~~~
Apache Answer 是一款开源问答系统,助力团队将零散知识沉淀为结构化资产。支持 Docker 快速部署、插件扩展、权限控制与多语言,兼具高效搜索、投票排序与私有化部署能力,适用于技术社区、企业知识库与用户支持场景。
1221 22
|
11月前
|
人工智能 程序员 开发者
2025年程序员如何挣钱?卓伊凡的七条职业发展路径分析-优雅草卓伊凡
2025年程序员如何挣钱?卓伊凡的七条职业发展路径分析-优雅草卓伊凡
593 6
|
存储 分布式数据库 数据库
Hbase学习二:Hbase数据特点和架构特点
Hbase学习二:Hbase数据特点和架构特点
828 0
|
NoSQL Java 关系型数据库
这个评论系统设计碉堡了
先赞后看,南哥助你Java进阶一大半官网给出了Facebook评论系统的高级设计图,Facebook的评论竟然是支持实时刷新的。也就是说用户不用刷新帖子,只要帖子有新的评论就会自动推送到用户端,这里Facebook使用的便是每天在全球有设备在使用的WebSocket技术。我是南哥,一个Java学习与进阶的领路人。相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
1070 5
这个评论系统设计碉堡了
|
JSON 安全 API
API接口是什么?(一篇文章全知道)
在数字化时代,API接口已成为推动软件生态和互联网创新的核心枢纽。本文深入解析了API的本质、架构、类型及应用场景,展示了其在移动互联网、电商、智慧城市等领域的广泛应用,并探讨了API在经济、创新和效率方面的巨大价值与深远影响。
5179 2
|
Rust 搜索推荐 算法
【密码学】一文读懂GCM(Golais计数器模式)
GCM(Galois计数器模式)同样的也是NIST提出来的,这个模式基于并行化设计,下面来一起看一下这个模式具体是如何工作的吧。
4119 0
【密码学】一文读懂GCM(Golais计数器模式)
【STM32】通过RTThread驱动W25QXXX
【STM32】通过RTThread驱动W25QXXX
797 0
|
机器学习/深度学习 算法 安全
第3讲笔记:详解隐私计算框架及技术要点
隐语架构是一个分层设计,支持不同技术路线,具有高内聚、低耦合特性,允许各层次的技术人员发挥所长。它包括产品层、算法层和计算层。产品层有SecretPad和SecretNote,提供轻量化安装和全栈产品,支持MPC、TEE等。算法层涉及PSI、PIR协议和SCQL,用于安全数据分析,屏蔽底层复杂性。计算层包含RayFed分布式调度框架和SPU密态计算核心,提供高性能密态计算能力和机器学习算法支持。
819 1

热门文章

最新文章