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


相关文章
|
机器学习/深度学习 算法 安全
随机性、熵与随机数生成器:解析伪随机数生成器(PRNG)和真随机数生成器(TRNG)
随机性在密码学、仿真和机器学习等领域中至关重要,本文探讨了随机性、熵的概念以及伪随机数生成器(PRNG)和真随机数生成器(TRNG)的原理和应用。PRNG通过算法生成看似随机的序列,适用于高效需求;TRNG利用物理过程生成真正随机数,适用于高安全需求。文章还讨论了两者的协同应用及其面临的挑战。
751 5
随机性、熵与随机数生成器:解析伪随机数生成器(PRNG)和真随机数生成器(TRNG)
|
JSON JavaScript 前端开发
Ctfshow web入门 nodejs篇 web334-web344
Ctfshow web入门 nodejs篇 web334-web344
389 0
|
8月前
|
人工智能 新能源 BI
关于举办"2025年第五届全国大学生技术创新创业大赛"的通知
大赛已连续举办四届,举办以来大赛始终以“创新驱动,赋能就业”为目标,促进学生的创新创造能力,普及创新创业知识,拓宽就业创业渠道,挖掘创新人才,培育多元化的未来产业推进力量。自开赛以来,赛事受到百余所学校关注,十几所高校已立项,参赛人次达上万人,征集优秀商业计划书上千余份。本届新赛事将继续全面贯彻党的二十大精神,完整、准确、全面贯彻新发展理念,加快构建新发展格局,以传统产业的高端化升级和前沿技术的产业化落地为主线,以创新为动力,第五届赛事将开展优秀项目落地北京计划。
2500 4
|
人工智能 自然语言处理 安全
Claude官网中文版:在国内使用claude AI的最佳选择!
Claude 是 Anthropic 公司开发的一款大型语言模型,类似于 OpenAI 的 ChatGPT 或 Google 的 Bard。它被设计成一个乐于助人 😊、诚实 🤝 且无害 😇 的 AI 助手。
|
存储 NoSQL PHP
如何用Redis高效实现点赞功能?用Set?还是Bitmap?
在众多软件应用中,点赞功能几乎成为标配。本文从实际需求出发,探讨如何利用 Redis 的 `Set` 和 `Bitmap` 数据结构设计高效点赞系统,分析其优缺点,并提供 PHP 实现示例。通过对比两种方案,帮助开发者选择最适合的存储方式。
378 3
|
Oracle Java 关系型数据库
jdk17安装全方位手把手安装教程 / 已有jdk8了,安装JDK17后如何配置环境变量 / 多个不同版本的JDK,如何配置环境变量?
本文提供了详细的JDK 17安装教程,包括下载、安装、配置环境变量的步骤,并解释了在已有其他版本JDK的情况下如何管理多个JDK环境。
22631 0
|
机器学习/深度学习 分布式计算 安全
深度学习之安全多方计算
基于深度学习的安全多方计算(Secure Multi-Party Computation,简称MPC)是一种密码学技术,旨在让多个参与方在不暴露各自数据的前提下,协作完成一个计算任务。
550 0
|
敏捷开发 前端开发 测试技术
软件开发工作流【详解】(含公司产品研发流程图、大厂研发架构图、大厂研发流程图)
软件开发工作流【详解】(含公司产品研发流程图、大厂研发架构图、大厂研发流程图)
7767 1
|
监控 搜索推荐 数据挖掘
ERP系统中的客户关系管理与客户满意度调查解析
【7月更文挑战第25天】 ERP系统中的客户关系管理与客户满意度调查解析
741 1
|
存储 算法 安全
密码算法的分类
【8月更文挑战第23天】
968 0

热门文章

最新文章