【密码学】密码学数学基础:剩余系
不得不啃的密码学数学基础之剩余系是个啥?数学里面有好多的定义都有前置的数学概念,要想弄懂剩余系还得先说说“同余”。
一、同余
那么“同余”有是个什么呢?在谈论“同余”之前,我们先圈定个讨论的范围。接下来讨论的都是整数集合。好了!可以正式开始介绍了。
(1)等价关系与同余
当我们讨论整数集合上的等价关系时,“同余”是一个核心概念,而由同余关系定义的“同余类”或“剩余类”则是研究整数除法性质和模运算的基本单元。
首先,我们需要了解什么是等价关系。在数学中,如果集合 𝐴 上的关系 ∼ 满足以下三个性质,则称 ∼ 是 𝐴 上的等价关系:
- 自反性:对于所有 𝑎∈𝐴,有 𝑎∼𝑎
- 对称性:对于所有 𝑎,𝑏∈𝐴,若 𝑎∼𝑏 则 𝑏∼𝑎
- 传递性:对于所有 𝑎,𝑏,𝑐∈𝐴,若 𝑎∼𝑏 且 𝑏∼𝑐,则 𝑎∼𝑐
同余关系就是整数集 𝑍 上的一种等价关系。两个整数 𝑎 和 𝑏 被称为模 𝑛 同余,如果它们被 𝑛 除后的余数相同,记作 𝑎≡𝑏 (mod 𝑛)。换句话说就是,𝑎 和 𝑏 同余模 𝑛 当且仅当 𝑛 整除 𝑎−𝑏。
(2)同余类又叫剩余类
既然同余关系是一种等价关系,那么它自然会将整数集 𝑍 划分成不同的等价类,这些等价类就是我们所说的同余类或剩余类。给定一个正整数 𝑛,对于 𝑍 中的任意整数 𝑎,我们可以构造模 𝑛 下的同余类,记作 [𝑎]𝑛 或者简单地写作 [𝑎],其中包含所有与 𝑎 同余模 𝑛 的整数。
形式上,同余类 [𝑎] 定义为:
[𝑎]={𝑏∈𝑍∣𝑎≡𝑏 (mod 𝑛)}
例如,考虑模 7 同余关系见下图

【我的理解】模7的剩余类[1],意思就是有哪些数除7余1,将这些数组成一个集合,记为。所以“模7的同余类”其实可以理解为除7有共同余数的七堆数(余0余1一直到余6共七堆数)。
(3)剩余系
在模 𝑛 同余意义下,所有可能的同余类构成了一个剩余系。更具体地说,模 𝑛 的完全剩余系是一组整数,每个整数代表了不同的同余类。最常见的是取模 𝑛 的完全剩余系为 {0,1,2,…,𝑛−1}。这个剩余系包含了所有可能的余数,即模 𝑛 同余类的代表元素。
还是拿上图,模7来举例:

我们从七堆数里面,每堆抽出一个,合为一组。就叫做一组完全剩余系。若在每一堆数里面抽出一个数,不是随机抽,而是选出最小非负的,构成的剩余系被叫做最小非负完全剩余系。
二、完全剩余系
上面我们见过了完全剩余系长什么样子,现在我们给完全剩余系一个严谨的数学定义:
在整数模m的所有剩余类中各取一个代表元
则称为模m的完全剩余系,其中完全剩余系
被称为最小非负完全剩余系。
用表示由m的最小非负完全剩余系集合,
,在
中的加法、减法、乘法都是模m意义下的运算。
三、简化剩余系
在模m的一个剩余类当中,如果有一个数与m互素,则该剩余类中所有的数均与m互素,这是称该剩余类与m互素。
(1)欧拉函数的数学定义
与m互素的剩余类的个数称为欧拉函数,记为。
等于
当中与m互素的数的个数,对于任意一个素数p,有
(2)简化剩余系的数学定义
在与m互素的个模m的剩余类中各取一个代表元
它们组合成的集合称为模m的一个简化剩余系。
中与m互素的数构成模m的一个简化剩余系,称为最小非负简化剩余系。
举例说明简化剩余系:
设m=12,则 {0,1,2,3,4,5,6,7,8,9,10,11} 构成模12的完全剩余系,把其中与12互素选出来,即 {1,5,7,11} 构成模12的简化剩余系。
再来一个例子加深理解,设m=6:
模 6 的完整剩余系:可以是 {0,1,2,3,4,5} 或者 {−2,−1,0,1,2,3} 等。
模 6 的简化剩余系:可以是 {1,5} 或者 {−1,5} 等,因为只有 1 和 5 与 6 互素。若指定最小非负简化剩余系,则为 {1,5}
简化剩余系和欧拉函数是RSA算法(最广泛使用的公钥加密算法)中用于选择加解和解密指数的基础, RSA算法的公钥和私钥生成都依赖于简化剩余系的性质。
相关文章:
【密码学】密码学数学基础:剩余系
不得不啃的密码学数学基础之剩余系是个啥?数学里面有好多的定义都有前置的数学概念,要想弄懂剩余系还得先说说“同余”。 一、同余 那么“同余”有是个什么呢?在谈论“同余”之前,我们先圈定个讨论的范围。接下来讨论的都是整数集…...
量化发展历史简述,QMT/PTrade+恒生UFT、LDP极速柜台适用哪些情形?
量化发展简述 1.2004年萌发阶段:策略局限在量化择时,量化选股等; 光大保德信量化核 心基金 上投摩根阿尔法基 金 金融危机,海归引入。 2.2010量化元年:中低频交易为主,主要依靠套利、对冲、多因子策略等…...
linux服务器anaconda安装及环境变量配置
1.下载anaconda Index of /可以在此链接中下载所需要的anaconda安装文件。使用一下的命令进行下载: wget https://repo.anaconda.com/archive/Anaconda3-2024.06-1-Linux-x86_64.sh2.安装anaconda 进入到下载的目录下,使用下面的的命令进行安装&#…...
如何在 Objective-C 中实现多态性,并且它与其他面向对象编程语言的多态性实现有何差异?
在Objective-C中,多态性可以通过使用父类的指针来调用子类的方法来实现。具体来说,可以定义一个父类的指针,然后将子类的实例赋值给这个指针。这样,即使使用父类的指针来调用方法,实际上会调用子类的方法。 需要注意的…...
阿里云OSS简单应用
前提条件 购买OSS标准存储包之后,就可以使用OSS的各种服务了 1 获取自己的OSS Endpoint OSS访问域名和数据中心_对象存储(OSS)-阿里云帮助中心 在官方的表格上找到自己OSS标准存储包对应的外网Endpoint即可 2 创建自己的阿里云Access Key ID 和 Access Key Secret …...
cleanshot Mac 上的截图工具
笔者闲来无事,最近在找一些mac上好用的工具其中一款就是cleanShot。为什么不用原有的mac自带的呢。因为相对来说编辑功能不算全面,不支持长截图。那有没有一款软件支持关于截图的好用工具呢。 所以笔者找了这款。安装包是直接安装就可使用的。请大家点赞…...
JMeter进行HTTP接口测试的技术要点
参数化 用户定义的变量 用的时候 ${名字} 用户参数 在参数列表中传递 并且也是${} csv数据文件设置 false 不忽略首行 要首行 从第一行读取 true 忽略首行 从第二行开始 请求时的参数设置: 这里的名称是看其接口需要的请求参数的名称 这里的变量名称就是为csv里面…...
基于智能算法的品牌视觉识别系统优化研究
基于智能算法的品牌视觉识别系统优化研究 一、引言 随着人工智能技术的快速发展,智能算法在各个领域的应用日益广泛。在品牌视觉识别系统中,智能算法同样发挥着重要作用。品牌视觉识别系统(Visual Identity System,简称VIS)是企业通过统一的视觉符号系统,将企业的理念、…...
递归锁与普通锁的区别
什么是锁? 在多线程编程中,锁是一种机制,用来确保某些代码块在同一时间只能被一个线程执行。想象一下,你和你的朋友们都想同时进入一个只有一把椅子的房间。为了避免混乱,你们需要一个锁来控制进入的顺序。 普通锁&a…...
FPGA上板项目(二)——PLL测试
目录 实验内容实验原理实验步骤实验结果 实验内容 将差分时钟信号转化为 192MHz 时钟信号作为输出。 实验原理 PLL,即锁相环,一种反馈控制电路,具有时钟倍频、分频、相位偏移和可编程占空比的功能。 实验步骤 添加 clocking wizard IP核&…...
C语言 | Leecode C语言题解之第229题多数元素II
题目: 题解: /*** Note: The returned array must be malloced, assume caller calls free().*//*假定 num1,num2 为出现次数大于 nums.length / 3 的两个数。(最多出现两个)遍历 nums, 若出现 num1、num2…...
mybatis-plus映射mysql的json类型的字段
一、对json里面内容建立实体类 Data AllArgsConstructor NoArgsConstructor public class RouteMetaEntity {private String title;private Boolean affix;private Boolean isAlwaysShow; }二、主类做映射 TableField(typeHandler JacksonTypeHandler.class)private RouteMe…...
20240716 Codeforces题目
A - Split the Multiset 题目 多集是一组数字,其中可以有相等的元素,数字的顺序无关紧要。例如, { 2 , 2 , 4 } \{2,2,4\} {2,2,4} 是一个multiset。 你有一个多集 S S S 。最初,multiset只包含一个正整数 n n n 。即 S {…...
29.【C语言】自定义函数
1、自定义详解 *提示:先看第12,19篇 例:写一个程序交换两个变量的值 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> void swap(int x, int y) {int z 0;z x;x y;y z; } int main() {int a 10;int b 20;swap(a, b);printf("%d…...
C++面向对象编程 基础篇(3)函数基础
3、函数基础 3.1 函数默认参数 在C中,函数的形参列表中的形参是可以有默认值的 注意事项: 如果某个位置已经有了默认参数,往后的形参都要有默认参数 函数声明和函数实现只能有一个有默认参数 示例: //如果自己传入参数&…...
excel有条件提取单元格特定文本(筛选纯文字的单元格或含有数字的单元格、单元格提取不同的文本长度)
实际工作背景 需要对导出的银行流水中的数十个村以及对应的村小组进行分组统计,但是初始的表格中村和小组是混在一起的,如下图所示: 目的:将大树村和大树村小组名称分别筛选出来 1.观察发现,大树村小组的单元格第4…...
HBase 在统一内容平台业务的优化实践
作者:来自 vivo 互联网服务器团队-Leng Jianyu、Huang Haitao HBase是一款开源高可靠性、扩展性、高性能和灵活性的分布式非关系型数据库,本文围绕数据库选型以及使用HBase的痛点展开,从四个方面对HBase的使用进行优化,取得了一些…...
【异常解决】Unable to start embedded Tomcat Nacos 启动报错
Unable to start embedded Tomcat Nacos 启动报错解决方案 一、背景描述二、原因分析三、解决方案 一、背景描述 Windows 本地启动 Nacos(2.2.0) 服务,控制台报错 Unable to start embedded Tomcat。 报错信息:Unable to start …...
【Java面向对象】对象和类
文章目录 1.为对象定义类2.定义类2.1 主类 3.类与对象3.1 构造方法3.2 通过引用变量访问对象3.3 访问对象的数据和方法3.4 引用数据域和 null 值3.5 基本类型变量和引用类型变量的区别 4.常见的类 1.为对象定义类 面向对象程序设计(OOP) 就是使用对象进行程序设计。对象 (obje…...
在微服务架构架构中父工程中的`<dependencyManagement>`和 `<dependencies>`的区别
在微服务架构架构中父工程中的<dependencyManagement>和 <dependencies>的区别: 在微服务架构中,通常会有一个父工程(或称作聚合工程)来管理一组相关的子模块(即各个微服务)。Maven 的 <de…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
