【密码学】一文读懂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;
    }
}


相关文章
|
存储 开发工具 git
【软考学习16】用位示图法,轻松解决空闲存储空间的管理难题
【软考学习16】用位示图法,轻松解决空闲存储空间的管理难题
1099 0
|
算法 安全 数据安全/隐私保护
DSA与RSA的区别、ECC(椭圆曲线数字签名算法(ECDSA))
DSA与RSA的区别、ECC(椭圆曲线数字签名算法(ECDSA))
1630 0
|
5月前
|
Apache 数据安全/隐私保护 Docker
【开源问答系统】GitHub 14.9k star 的开源问答引擎来了,三分钟搭建完成~~~
Apache Answer 是一款开源问答系统,助力团队将零散知识沉淀为结构化资产。支持 Docker 快速部署、插件扩展、权限控制与多语言,兼具高效搜索、投票排序与私有化部署能力,适用于技术社区、企业知识库与用户支持场景。
737 22
|
JSON JavaScript 前端开发
Ctfshow web入门 nodejs篇 web334-web344
Ctfshow web入门 nodejs篇 web334-web344
460 0
|
10月前
|
人工智能 新能源 BI
关于举办"2025年第五届全国大学生技术创新创业大赛"的通知
大赛已连续举办四届,举办以来大赛始终以“创新驱动,赋能就业”为目标,促进学生的创新创造能力,普及创新创业知识,拓宽就业创业渠道,挖掘创新人才,培育多元化的未来产业推进力量。自开赛以来,赛事受到百余所学校关注,十几所高校已立项,参赛人次达上万人,征集优秀商业计划书上千余份。本届新赛事将继续全面贯彻党的二十大精神,完整、准确、全面贯彻新发展理念,加快构建新发展格局,以传统产业的高端化升级和前沿技术的产业化落地为主线,以创新为动力,第五届赛事将开展优秀项目落地北京计划。
2709 4
|
存储 NoSQL PHP
如何用Redis高效实现点赞功能?用Set?还是Bitmap?
在众多软件应用中,点赞功能几乎成为标配。本文从实际需求出发,探讨如何利用 Redis 的 `Set` 和 `Bitmap` 数据结构设计高效点赞系统,分析其优缺点,并提供 PHP 实现示例。通过对比两种方案,帮助开发者选择最适合的存储方式。
459 3
|
NoSQL Java 关系型数据库
这个评论系统设计碉堡了
先赞后看,南哥助你Java进阶一大半官网给出了Facebook评论系统的高级设计图,Facebook的评论竟然是支持实时刷新的。也就是说用户不用刷新帖子,只要帖子有新的评论就会自动推送到用户端,这里Facebook使用的便是每天在全球有设备在使用的WebSocket技术。我是南哥,一个Java学习与进阶的领路人。相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
728 5
这个评论系统设计碉堡了
|
敏捷开发 前端开发 测试技术
软件开发工作流【详解】(含公司产品研发流程图、大厂研发架构图、大厂研发流程图)
软件开发工作流【详解】(含公司产品研发流程图、大厂研发架构图、大厂研发流程图)
8887 1
|
机器学习/深度学习 分布式计算 安全
深度学习之安全多方计算
基于深度学习的安全多方计算(Secure Multi-Party Computation,简称MPC)是一种密码学技术,旨在让多个参与方在不暴露各自数据的前提下,协作完成一个计算任务。
642 0
|
Oracle Java 关系型数据库
jdk17安装全方位手把手安装教程 / 已有jdk8了,安装JDK17后如何配置环境变量 / 多个不同版本的JDK,如何配置环境变量?
本文提供了详细的JDK 17安装教程,包括下载、安装、配置环境变量的步骤,并解释了在已有其他版本JDK的情况下如何管理多个JDK环境。
27868 0

热门文章

最新文章