当前位置: 首页 > news >正文

密码学数学基础 - 整数关系

在我们踏上密码学数学基础的冒险之旅后,第一站就是整数关系的世界。这个领域虽然看似简单,但却是构建整个密码学大厦的基石。无论是最基本的整除关系,还是更复杂的同余关系,它们都在为我们揭示数字之间的神秘联系。

本章将带你深入了解整数关系的核心概念,包括整除、素数、最大公约数和最小公倍数等。我们将通过生动的例子和直观的解释,帮助你掌握这些基本工具,为后续的密码学学习打下坚实的基础。

别看我说的很高大上,放轻松,这一章真的非常简单口牙。😁

整除关系与素数 😋

在整数的世界里,整除关系是最基本的关系之一。我们说一个整数a aa整除另一个整数b bb,记作a ∣ b a \mid bab,如果存在一个整数k kk使得b = a k b=akb=ak。换句话说,b bb可以被a aa整除,没有余数。例如,3 ∣ 12 3 \mid 12312因为12 = 3 × 4 12=3 \times 412=3×4,但5 ∤ 12 5 \nmid 12512因为12 1212不能被5 55整除。

素数是大于1的整数,除了1和它本身之外没有其他正整数因数。素数在密码学中扮演着重要的角色,因为许多加密算法都依赖于大素数的性质。例如,RSA加密算法就是基于两个大素数的乘积来实现安全性的。

最大公约数与最小公倍数 😛

最大公约数(GCD)是指两个或多个整数的公共约数中最大的一个。比如,gcd ( 12 , 15 ) = 3 \text{gcd}(12,15)=3gcd(12,15)=3,因为3是12和15的最大公共约数。

最小公倍数(LCM)则是指两个或多个整数的公共倍数中最小的一个。例如,lcm ( 4 , 6 ) = 12 \text{lcm}(4,6)=12lcm(4,6)=12,因为12是4和6的最小公共倍数。

如何求解最大公约数与最小公倍数 🤨

计算最大公约数的一种高效方法是辗转相除法(EuclideanAlgorithm)。
这个算法基于一个重要的性质①:对于两个整数a aab bb,如果a > b a>ba>b,那么
gcd ( a , b ) = gcd ( b , a m o d b ) \text{gcd}(a,b)=\text{gcd}(b,a \mod b)gcd(a,b)=gcd(b,amodb)

通过不断地将较大的数替换为较小的数和它们的余数,我们可以快速找到最大公约数。

再根据最大公约数和最小公倍数的性质②:
lcm ( a , b ) = ∣ a × b ∣ gcd ( a , b ) \text{lcm}(a,b)=\frac{|a\times b|}{\text{gcd}(a,b)}lcm(a,b)=gcd(a,b)a×b

求出最小公倍数。

裴蜀定理与扩展欧几里得算法 🥰

裴蜀定理(Bézout’sIdentity)是整数关系中的一个重要定理,它告诉我们对于任意两个整数a aab bb,存在整数x xxy yy,使得性质③:
a x + b y = gcd ( a , b ) ax+by=\text{gcd}(a,b)ax+by=gcd(a,b)

扩展欧几里得算法(ExtendedEuclideanAlgorithm)就是基于裴蜀定理的一种算法,它不仅可以计算最大公约数,还可以找到满足裴蜀定理的整数x xxy yy

结论①②③证明 🤓👆

由于本章节的定理和算法都比较基础,我们来简单证明一下吧。

结论①证明 😑

带余除法分解

假设a = b q + r a=bq+ra=bq+r,其中q qq是商,r rr是余数,且0 ≤ r < b 0 \leq r<b0r<b。我们记r rra m o d b a\mod bamodb

证明g c d ( a , b ) gcd(a,b)gcd(a,b)b bbr rr的公约数

d = gcd ( a , b ) d=\text{gcd}(a,b)d=gcd(a,b),则d ∣ a d\mid adad ∣ b d \mid bdb
因为d dd整除a aab q bqbqd dd也必须整除r = a − b q r=a-bqr=abq,即d ∣ r d\mid rdr
所以,d ddb bbr rr的公因数,那么一定小于等于最大公因数gcd ( b , r ) \text{gcd}(b,r)gcd(b,r),故gcd ( a , b ) ≤ gcd ( b , r ) \text{gcd}(a,b) \leq \text{gcd}(b,r)gcd(a,b)gcd(b,r)

证明g c d ( b , r ) gcd(b,r)gcd(b,r)a aab bb的公约数

d ′ = gcd ( b , r ) d'=\text{gcd}(b,r)d=gcd(b,r),则d ′ ∣ b d'\mid bdbd ′ ∣ r d'\mid rdr
因为d ′ d'd整除b bbr rrd ′ d'd也必须整除a = b q + r a=bq+ra=bq+r,即d ′ ∣ a d'\mid ada
所以,d ′ d'da aab bb的公因数,那么一定小于等于最大公因数gcd ( a , b ) \text{gcd}(a,b)gcd(a,b),故gcd ( b , r ) ≤ gcd ( a , b ) \text{gcd}(b,r) \leq \text{gcd}(a,b)gcd(b,r)gcd(a,b)

总结

综上所述,gcd ( a , b ) = gcd ( b , r ) \text{gcd}(a,b)=\text{gcd}(b,r)gcd(a,b)=gcd(b,r),证明完毕。

结论②证明 😪

d = gcd ( a , b ) d=\text{gcd}(a,b)d=gcd(a,b),则a = d a ′ a=da'a=dab = d b ′ b=db'b=db,其中a ′ a'ab ′ b'b是互质的整数。

因此,lcm ( a , b ) = d × a ′ × b ′ = ∣ d a ′ × d b ′ ∣ d = ∣ a × b ∣ gcd ( a , b ) \text{lcm}(a,b)=d\times a' \times b'=\frac{|da' \times d b'|}{d}=\frac{|a\times b|}{\text{gcd}(a,b)}lcm(a,b)=d×a×b=dda×db=gcd(a,b)a×b,证明完毕。

结论③证明 😨

欧几里得算法(辗转相除法)

d = gcd ( a , b ) d=\text{gcd}(a,b)d=gcd(a,b)
用辗转相除法:

a = b q 1 + r 1 , 0 < r 1 < b b = r 1 q 2 + r 2 , 0 < r 2 < r 1 \begin{align*} a=bq_1+r_1,0<r_1<b\\ b=r_1q_2+r_2,0<r_2<r_1 \end{align*}a=bq1+r10<r1<bb=r1q2+r20<r2<r1

不断进行下去,直到余数为0:

r n − 2 = r n − 1 q n + r n , 0 < r n < r n − 1 r n − 1 = r n q n + 1 + 0 , r n = d \begin{align*} r_{n-2}=r_{n-1}q_n+r_n,0<r_n<r_{n-1}\\ r_{n-1}=r_nq_{n+1}+0,r_n=d \end{align*}rn2=rn1qn+rn0<rn<rn1rn1=rnqn+1+0rn=d

最后余数为0,说明r n = d = gcd ( a , b ) r_n=d=\text{gcd}(a,b)rn=d=gcd(a,b)

反向替换求解x xxy yy

倒数第二步:
d = r n = r n − 2 − r n − 1 q n d=r_n=r_{n-2}-r_{n-1}q_nd=rn=rn2rn1qn

再把r n − 1 r_{n-1}rn1用上一行表示:
r n − 1 = r n − 3 − r n − 2 q n − 1 r_{n-1}=r_{n-3}-r_{n-2}q_{n-1}rn1=rn3rn2qn1

往回带入:
d = A ⋅ r n − 2 + B ⋅ r n − 3 , A , B ∈ Z d=A\cdot r_{n-2}+B\cdot r_{n-3},A,B\in\mathbb{Z}d=Arn2+Brn3,A,BZ

一直往上带入,最终可以表示为:
d = x ⋅ a + y ⋅ b d=x\cdot a+y\cdot bd=xa+yb

其中x , y ∈ Z x,y\in\mathbb{Z}x,yZ

我的个人blog:Alice and Bobの神秘小屋

http://www.cnnetsun.cn/news/1337079.html

相关文章:

  • 虚幻4网络通信必备:手把手教你用Va Rest插件对接SpringBoot后端
  • 金融问答合规最后窗口期:Dify 0.12+版本强制启用的3项新审计日志字段,错过将无法通过Q3银保监现场检查
  • WSL2后悔药教程:用export命令实现系统时光机(Ubuntu版)
  • 详解单链表(含链表的实现过程)
  • YOLO系列算法改进 | 主干改进篇 | 替换MobileViGv2可缩放图卷积网络 | 助力模型复杂场景下精细区分目标和理解空间关系 | CVPR 2024
  • 让照片活起来:Image-to-Video图像转视频生成器实战体验
  • Cosmos-Reason1-7B实战案例:教育AI助手解析物理实验视频并生成考题
  • Phi-3-vision-128k-instruct镜像免配置:Docker一键拉起+Chainlit前端自动对接
  • 2026企业级攻防实战全解析:从攻击链路到防御体系(附应急响应指南)
  • 基于STM32的NES游戏硬件扩展板设计
  • 电容感应式烙铁自动清洁器设计与实现
  • STM32F103C8循迹小车实战:IO口模式选择与PWM调参避坑指南
  • 【ROS2】从零开始构建你的第一个ROS2节点:基于RCLPY的实战指南
  • GD32VW553开发板I2C驱动SHT20温湿度传感器移植实战
  • 阿里云DataWorks:一站式大数据开发治理平台全景解析
  • Qwen2-VL-2B-Instruct在Unity游戏开发中的应用:智能NPC视觉感知系统
  • 3个强力方案解决Blender 3MF文件处理难题:Blender3mfFormat解决方案
  • Ubuntu服务器磁盘爆满?Ncdu命令行神器5分钟帮你找出空间黑洞
  • 从DAGGER到DAD:模仿学习中的数据聚合技术演进与最新应用案例
  • Python+Ollama构建本地AI文档分析流水线:从PDF智能解析到结构化Excel输出
  • ZYNQ SD卡驱动与FATFS文件系统实战:从硬件配置到数据读写
  • 重构C/C++开发效率:Red Panda Dev-CPP的技术突破与实践指南
  • HY-Motion 1.0部署指南:两种规格模型,如何根据显存选择?
  • 开箱即用:Hunyuan-MT 7B翻译镜像,原文输入→一键翻译→实时展示
  • Android逆向实战:用Frida-DexDump轻松脱壳(附详细命令解析)
  • Qwen3-14B部署避坑指南:vLLM日志分析、模型加载失败排查与修复方案
  • 梦幻动漫魔法工坊场景实战:一键生成洛丽塔风格壁纸
  • 特征提取新思路:为什么D2-Net在弱纹理场景下比传统方法更鲁棒?
  • Windows窗口置顶完全指南:告别多任务切换烦恼
  • Realistic Vision V5.1写实人像生成实战:为独立音乐人定制专辑封面人物