在循环群模运算中计算逆元

文章目录

  • 一、算数模复合
  • 二、群 循环群
    • 1. 群 (Group)
    • 2. 环 (Ring)
    • 3. 循环群 (Cyclic Group)
    • 4. 多项式环 (Polynomial Ring)
    • 5. 有限域 (Finite Field)
    • 6. 椭圆曲线 (Elliptic Curve)
  • 三、求逆元
    • 1. 扩展欧几里得算法
      • 1.1 算法概述
      • 1.2 步骤
      • 1.3 示例
    • 2. 费马小定理


一、算数模复合

 假设 N = p ⋅ q N = p \cdot q N=pq,其中 p 和 q 是质数 (prime)。
Z N = { 0 , 1 , 2 , . . . , N − 1 } ; ( Z N ) ∗ = { i n v e r t i b l e e l e m e n t s i n Z N } Z_N = \{0, 1, 2, ..., N-1\};(Z_N)^* = \{invertible\ elements\ in\ Z_N\} ZN={0,1,2,...,N1};(ZN)={invertible elements in ZN} 定理:在这里插入图片描述
 Euler 定理:
在这里插入图片描述


二、群 循环群

1. 群 (Group)

 群是一种代数结构,由 一个集合一个二元运算 组成,满足以下条件 (下面默认为 乘法群):

  • 封闭性:对于所有 a, b 在群中,a⋅b 也在群中。
  • 结合律:对于所有 a, b, c 在群中,(a⋅b)⋅c=a⋅(b⋅c)。
  • 单位元:存在一个元素 e 在群中,对于所有 a 在群中,a⋅e = e⋅a = a
  • 逆元:在群中,对于的 每个元素 a存在 一个元素 b 使得 a⋅b = b⋅a = e,其中 e 是单位元。 如果运算满足交换律,群可以是 阿贝尔群 (Abelian Group)

2. 环 (Ring)

是代数中的一个基本概念,它是一个 集合,配备了 两种运算:加法乘法,满足以下性质:

  • 加法和乘法的 封闭性
  • 加法和乘法的 结合律
  • 存在 加法单位元 (通常为 0) 和 乘法单位元 (通常为 1)。
  • 具有加法的交换律。
  • 每个元素 都有 加法逆元。 环 可以没有 乘法逆元,或者 只有部分元素有 乘法逆元

3. 循环群 (Cyclic Group)

 循环群是一种 特殊的群,它可以由 单个元素 生成。如果存在 一个元素 g 在群 G 中,使得群 G 中的 每个元素 都可以 表示为 g 的幂,那么 G 就是循环 的。循环群可以是 有限 的或 无限 的,并且可以是 阿贝尔群

4. 多项式环 (Polynomial Ring)

 多项式环是一个环,其中的 元素多项式系数 来自 某个环 (通常是整数环或有理数环)。例如,Z[x] 表示所有 系数为整数多项式 构成的
 多项式环中的运算是 多项式的加法和乘法,它们遵循 分配律结合律

5. 有限域 (Finite Field)

 有限域,也称为伽罗瓦域 (Galois Field),是一个具有 有限个元素的域是一种 特殊的环,其中 每个非零元素 都有 乘法逆元。有限域在密码学中非常重要,因为它们提供了一个在其中可以进行代数运算的封闭系统。

6. 椭圆曲线 (Elliptic Curve)

 椭圆曲线是密码学中的另一种群结构,它由 满足特定方程的 点 组成。椭圆曲线群在密码学中的应用包括椭圆曲线密码体系 (ECC),它提供了 与 RSA 相当的 安全性,但使用的 密钥尺寸 更小


三、求逆元

 在密码学中,求逆元十分常见,尤其是在处理 模运算 的时候。
 逆元的 存在性 取决于 两个数 是否 互质,即它们的 最大公约数 (GCD) 是否为 1。以下是几种求逆元的方法:

1. 扩展欧几里得算法

1.1 算法概述

 这是最常用的方法,用于 找到整数 a 和 b 的最大公约数,并找到 整数 x 和 y 使得:
a ⋅ x + b ⋅ y = g c d ( a , b ) a \cdot x + b \cdot y = gcd(a, b) ax+by=gcd(a,b)如果 g c d ( a , b ) = 1 gcd(a, b) = 1 gcd(a,b)=1,则 x 是 a 模 b 的逆元

输入是 a, b (a 要小于 b),输出是 x。

1.2 步骤

  1. 初始化
    r 0 = a , r 1 = b , x 0 = 1 , x 1 = 0 , y 0 = 0 , y 1 = 1 或者 r 0 = b , r 1 = a , x 0 = 0 , x 1 = 1 , y 0 = 1 , y 1 = 0 r_0 = a, r_1 = b, x_0 = 1, x_1 = 0, y_0 = 0, y_1 = 1\\或者r_0 = b, r_1 = a, x_0 = 0, x_1 = 1, y_0 = 1, y_1 = 0 r0=a,r1=b,x0=1,x1=0,y0=0,y1=1或者r0=b,r1=a,x0=0,x1=1,y0=1,y1=0这里的关键就在于,要求 a ⋅ x 0 + b ⋅ y 0 = r 0 , a ⋅ x 1 + b ⋅ y 1 = r 1 a \cdot x_0 + b \cdot y_0 = r_0,a \cdot x_1 + b \cdot y_1 = r_1 ax0+by0=r0,ax1+by1=r1 成立。下面以前一种情况为例子。
  2. 迭代 (i 从 2 开始)
     当 r i − 1 > 0 r_{i-1}>0 ri1>0 时,计算 q i = ⌊ r i − 2 r i − 1 ⌋ q_i = \lfloor \frac{r_{i-2}}{r_{i-1}} \rfloor qi=ri1ri2,然后更新:
    • r i = r i − 2 − q i ⋅ r i − 1 r_i = r_{i-2} - q_i \cdot r_{i-1} ri=ri2qiri1
    • x i = x i − 2 − q i ⋅ x i − 1 x_i = x_{i-2} - q_i \cdot x_{i-1} xi=xi2qixi1
    • y i = y i − 2 − q i ⋅ y i − 1 y_i = y_{i-2} - q_i \cdot y_{i-1} yi=yi2qiyi1
  3. r i = 0 r_i = 0 ri=0 时, x i − 1 x_{i-1} xi1 就是 a 模 b 的逆元

1.3 示例

 现在假设,我们要求 3 在 mod 11 下的逆元

  1. 问题转化:
    首先,要求 3mod 11 下的逆元,也就是要找到一个整数 x,使得:
    3 ⋅ x ≡ 1 ( m o d 11 ) 3 \cdot x \equiv 1\ (mod\ 11) 3x1 (mod 11)这意味着,我们需要找到 xy,使得:
    3 ⋅ x + 11 ⋅ y = 1 3 \cdot x + 11 \cdot y = 1 3x+11y=1此时问题便转化为了上面的标准形式
  2. 初始化:
    r 0 = 3 r 1 = 11 x 0 = 1 x 1 = 0 y 0 = 0 y 1 = 1 r_0 = 3\\r_1 = 11\\x_0 = 1\\x_1 = 0\\y_0 = 0\\y_1 = 1 r0=3r1=11x0=1x1=0y0=0y1=1
  3. 第一次迭代:
    首先判断 r 1 > 0 r_1 > 0 r1>0 成立,然后计算:
    q 2 = ⌊ r 0 r 1 ⌋ = ⌊ 3 11 ⌋ = 0 q_2 = \lfloor \frac{r_0}{r_1} \rfloor = \lfloor \frac{3}{11} \rfloor = 0 q2=r1r0=113=0更新:
    r 2 = 3 − 0 ∗ 11 = 3 x 2 = 1 − 0 ∗ 0 = 1 y 2 = 0 − 0 ∗ 1 = 0 r_2 = 3 - 0 * 11 = 3\\x_2 = 1 - 0 * 0 = 1\\y_2 = 0 - 0 * 1 = 0 r2=3011=3x2=100=1y2=001=0
  4. 第二次迭代:
    首先判断 r 2 > 0 r_2 > 0 r2>0 成立,然后计算:
    q 3 = ⌊ r 1 r 2 ⌋ = ⌊ 11 3 ⌋ = 3 q_3 = \lfloor \frac{r_1}{r_2} \rfloor = \lfloor \frac{11}{3} \rfloor = 3 q3=r2r1=311=3更新:
    r 3 = 11 − 3 ∗ 3 = 2 x 3 = 0 − 3 ∗ 1 = − 3 y 2 = 1 − 3 ∗ 0 = 1 r_3 = 11 - 3 * 3 = 2\\x_3 = 0 - 3 * 1 = -3\\y_2 = 1 - 3 * 0 = 1 r3=1133=2x3=031=3y2=130=1
  5. 第三次迭代:
    首先判断 r 3 > 0 r_3 > 0 r3>0 成立,然后计算:
    q 4 = ⌊ r 2 r 3 ⌋ = ⌊ 3 2 ⌋ = 1 q_4 = \lfloor \frac{r_2}{r_3} \rfloor = \lfloor \frac{3}{2} \rfloor = 1 q4=r3r2=23=1更新:
    r 4 = 3 − 1 ∗ 2 = 1 x 4 = 1 − 1 ⋅ ( − 3 ) = 4 t 4 = 0 − 1 ⋅ 1 = − 1 r_4 = 3 - 1 * 2 = 1\\x_4 = 1 - 1 \cdot (-3) = 4\\t_4 = 0 - 1 \cdot 1 = -1 r4=312=1x4=11(3)=4t4=011=1
  6. 第四次迭代:
    首先判断 r 4 > 0 r_4 > 0 r4>0 成立,然后计算:
    q 5 = ⌊ r 3 r 4 ⌋ = ⌊ 2 1 ⌋ = 2 q_5 = \lfloor \frac{r_3}{r_4} \rfloor = \lfloor \frac{2}{1} \rfloor = 2 q5=r4r3=12=2更新:
    r 5 = 2 − 1 ∗ 2 = 0 r_5 = 2 - 1 * 2 = 0 r5=212=0此时,可以发现, r 5 = 0 r_5 = 0 r5=0,满足结束的条件了。于是乎得到 3 在 mod 11 的时候,逆元是 x 3 = 4 x_3 = 4 x3=4

2. 费马小定理

 如果 a 和 N 互质,且 N 是质数,费马小定理指出:
a n − 1 ≡ 1 ( m o d N ) a^{n-1} \equiv 1\ (mod\ N) an11 (mod N)因此,a 模 b 的逆元是 a n − 2 ( m o d n ) a^{n-2}\ (mod\ n) an2 (mod n)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64298.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python使用Selenium库获取 网页节点元素、名称、内容的方法

我们要用到一些网页源码信息,例如获取一些节点的class内容, 除了使用Beautifulsoup来解析,还可以直接用Selenium库打印节点(元素)名称,用来获取元素的文本内容或者标签名。 例如获取下面的class的内容&am…

M3DM的autodl环境构建过程笔记

文章目录 在3D-ADS环境https://blog.csdn.net/tfxzgp/article/details/144259472基础上构建M3DM(失败的记录,不用看)更换镜像重来(成功)安装缺少的包修改models.py中的RGB和点云backbone的路径修改main.py路径参数运行 在3D-ADS环境https://b…

Android 使用Overlay现实主题切换

最近项目上,想做一个主题切换的功能,整理了一下发布出来,主要使用的是IOverlayManager,大体思路如下: 1、想切换的应用,各自做overlay apk(简称皮肤包) 2、将overlay apk push 到v…

【原生js案例】如何实现一个穿透字体颜色的导航

普通的导航大家都会做,像这种穿透字体的导航应该很少见吧。高亮不是通过单独设置一个active类来设置字体高亮颜色,鼠标滑过导航项,字体可以部分是黑色,不分是白色,这种效果的实现 感兴趣的可以关注下我的系列课程【we…

IDEA 2023.3.6 下载、安装、激活与使用

一、IDEA2023.3.6下载 国际官网:https://www.jetbrains.com/ 国内官网:https://www.jetbrains.com.cn/ 如果国际官网无法访问,就使用国内官网,我们以国内官网为例下载IDEA2023.3.6 首先进入首页如下图&#xf…

ip_done

文章目录 路由结论 IP分片 数据链路层重谈Mac地址MAC帧报头局域网的通信原理MSS,以及MAC帧对上层的影响ARP协议 1.公司是不是这样呢? 类似的要给运营商交钱,构建公司的子网,具有公司级别的入口路由器 2.为什么要这样呢?? IP地…

深度学习作业 - 作业十一 - LSTM

问题一 推导LSTM网络中参数的梯度,并的分析其避免梯度消失的效果 LSTM网络是为了解简单RNN中存在的长程依赖问题而提出的一种新型网络结构,其主要思想是通过引入门控机制来控制数据的流通,门控机制包括输入门、遗忘门与输出门,同…

医院与医疗设备供应商网络安全事故综述

医院与医疗设备供应商网络安全事故综述 在医疗行业中,医院和医疗设备供应商的网络安全问题同样不容忽视。以下是一些近年来发生的重大网络安全事故的总结: 1. 德国杜塞尔多夫大学医院勒索软件攻击(2020年) 事件描述&#xff1a…

修改vscode中emmet中jsx和tsx语法中className的扩展符号从单引号到双引号 - HTML代码补全 - 单引号双引号

效果图 实现步骤 文件 > 首选项 > 设置搜索“”在settings.json中修改,增加 "emmet.syntaxProfiles": {"html": {"attr_quotes": "single"},"jsx": {"attr_quotes": "double","…

从0到1实现vue3+vite++elementuiPlus+ts的后台管理系统(一)

前言:从这篇文章开始实现vue3vite的后台管理系统,记录下自己搭建后台系统图的过程。 这篇文章完成项目的初始化和基本配置,这一步可以直接跟着vue3官网进行。整个系列只有前端部分,不涉及后端。 vue3官网:https://cn.…

JavaEE初阶——多线程(线程安全-锁)

复习上节内容(部分-掌握程度不够的) 加锁,解决线程安全问题。 synchronized关键字,对锁对象进行加锁。 锁对象,可以是随便一个Object对象(或者其子类的对象),需要关注的是&#xff…

如何在NGINX中实现基于IP的访问控制(IP黑白名单)?

大家好,我是锋哥。今天分享关于【如何在NGINX中实现基于IP的访问控制(IP黑白名单)?】面试题。希望对大家有帮助; 如何在NGINX中实现基于IP的访问控制(IP黑白名单)? 1000道 互联网大…

Docker--Docker Registry(镜像仓库)

什么是Docker Registry? 镜像仓库(Docker Registry)是Docker生态系统中用于存储、管理和分发Docker镜像的关键组件。 镜像仓库主要负责存储Docker镜像,这些镜像包含了应用程序及其相关的依赖项和配置,是构建和运行Doc…

微信小程序:实现节点进度条的效果;正在完成的节点有动态循环效果;横向,纵向排列

参考说明 微信小程序实现流程进度功能 - 知乎 上面的为一个节点进度条的例子&#xff0c;但并不完整&#xff0c;根据上述代码&#xff0c;进行修改完善&#xff0c;实现其效果 横向效果 代码 wxml <view classorder_process><view classprocess_wrap wx:for&quo…

window下的qt5.14.2配置vs2022

这里做一个笔记&#xff0c;已知qt5.14.2和vs2022不兼容&#xff0c;无法自动扫描到vs的编译器。但由于团队协作原因&#xff0c;必须使用qt5.14.2&#xff0c;并且第三方库又依赖vs2022。其实qt5.15.2是支持vs2022的&#xff0c;如果能够用qt5.15.2&#xff0c;还是建议使用qt…

Java-27 深入浅出 Spring - 实现简易Ioc-03 在上节的业务下手动实现IoC

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…

梳理你的思路(从OOP到架构设计)_UML应用:业务内涵的分析抽象表达01

目录 1、 系统分析(System Analysis) 系統分析的涵意 业务(领域)知识 业务内涵 业务(领域)概念 2、举例(一) &#xff1a;东方传说 UML与建模工具 1、 系统分析(System Analysis) 系統分析的涵意 许多人在学习系统分析(System Analysis)时&#xff0c;常迷失于其字面上…

Web 安全 跨站 跨域 XSS CSRF

跨站 跨站即 cross-site&#xff0c;它和同站&#xff08;same-site&#xff09;相对&#xff0c;对协议和端口号无要求&#xff0c;只要两个 URL 的 eTLD 1 一致&#xff0c;就能称为同站。那么什么是 eTLD 呢&#xff1f; eTLD 即 effective top level domain&#xff0c;…

k8s服务搭建与实战案例

Kubernetes&#xff08;K8s&#xff09;作为一个开源的容器编排平台&#xff0c;广泛应用于现代的云原生应用架构中。以下是一些常见的 **Kubernetes 实战案例**&#xff0c;包括从基础部署到高级应用场景的使用。通过这些案例&#xff0c;可以更好地理解 K8s 的运作原理和最佳…

PYQT5程序框架

pyqt5程序框架_哔哩哔哩_bilibili 1.UI代码 Qhkuja.py # -*- coding: utf-8 -*-# Form implementation generated from reading ui file Qhkuja.ui # # Created by: PyQt5 UI code generator 5.15.7 # # WARNING: Any manual changes made to this file will be lost when py…