- 应用密码学:原理、分析与Python实现
- 刘卓 赵勇焜 黄领才编著
- 1087字
- 2024-12-11 16:52:26
2.4 模运算
2.4.1 模运算定义
模运算也称同余理论(Congruence),由24岁的高斯在他的著作《算术研究》中首次提出。模运算得到的结果其实就是除法定理中的余数。在除法定理中,如果用2去除一个正整数,很容易知道余数就只有两个,即0和1 ,其中偶数的余数是0 ,奇数的余数是1 。如果用3去除一个正整数,余数就只有3个,即0、1、2。模运算对除法定理的商不感兴趣,甚至熟悉一些式子后可以忽略,而感兴趣的是余数。
日常生活当中其实就有很多模运算的实际应用。例如,时间上的“星期”也就是关于模7的运算。大部分人都只对今天是星期几(余数)感兴趣,很少人对今天是今年的第几周(商)感兴趣。如果扩大范围,则所有只对周期性结果感兴趣的事情都是模运算。下面了解模运算的定义。
定义2.4.1 模运算
设,
是一个定值且
。规定当
时,
模
同余。记作:
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01255.jpg?sign=1739113138-eeZdJ4jcshmAafOLRbTM4ep6qJuiDz2b-0-635711ef68dc90d1151ddda3d3fbd3fc)
模运算拥有以下几个性质[8]。
1)反身性。对于所有的,都有
。
2)对称性。对于所有的,都有
。
3)传递性。对于所有的,如果
且
,那么
。
对于,
,并且
和
,那么:
●
●
●
●
● 如果,
例2.4.1 模运算例子。
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01325.jpg?sign=1739113138-Y6VB750HLZZmeaxNCEjZzYX7ZfwFpZNS-0-6776acc64308e20da006c275f8bbb0ed)
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01337.jpg?sign=1739113138-CIzKCz9zvFOanvXfF82nI1xEJDm88alH-0-1c0131d202335b83fcaba8d8de0fc96c)
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01343.jpg?sign=1739113138-LljnAcOq9g6kxrOQTwHHKPL2BIGGAb4s-0-9b608eafd375c8ac04c1035af8edd7b6)
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01347.jpg?sign=1739113138-dDXxCvC6nr2wR1qX4iG57148dmTiVuq3-0-93f71bf4d667d41c35fd08bf6f7622ac)
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01348.jpg?sign=1739113138-VkIrgonodIaak49p7GtrRp51bzyA8pMS-0-c27cf56fff750717a05330521d1c94ce)
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01353.jpg?sign=1739113138-M3CM9lXaDj9TSdVWnqyKsNUvrr1b7Uqz-0-9e97c5a7ab1dfa1fcba91fe1bccae3ea)
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01358.jpg?sign=1739113138-9VNiT6NkOPPnQyynbixeWDMgnL1FRKhg-0-ec5f3acd9a2765c709580257969f17a9)
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01362.jpg?sign=1739113138-NmKWw49sIjXgxFoVe4i8quojunwBChcj-0-9a6e54de71af9756b9c05187b09bc7f2)
在Python中,可以使用进行模运算,如
。
例2.4.2 求。
解:。阶乘的增长非常可怕,如果没有模运算的帮助,解这道题非常困难。
不过由于,因此对于
,都有:
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01414.jpg?sign=1739113138-2ZPQwyIlQYNJQWkIBEWWDagwUF7E46ry-0-3e97222826c305d25dd666c8e7b9b654)
也就是说:
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01415.jpg?sign=1739113138-bLEyiixRdWBidotnQQn5bfDVESv2e0Ty-0-dad1198c4159b9cbd2caff91fdd1ab1a)
给定,
,如果
,那么对于线性同余方程
有且只有唯一解。如果
,方程
则可能有或没有解。如何求解方程
?过程也非常简单,首先验证
是否可以整除
,如果不可以,则无解。如果可以,则用下面的方程进行求解。
将式子转化成,记作
。使用欧几里得算法得到式子
的解
,调整得到
。因此最后的解就是
。
例2.4.3 求方程和
。
解:第1个方程比较简单,很容易得到。该解是模
情况下的唯一解,如果扩展至模
,则
是另一个解。
求第2个方程,由于,可以整除5 ,因此有且只有唯一解。然后计算
,计算过程和例2.3.3相同,得到结果
。所以该方程最小正剩余
。
其实可以发现,无论模数多大,得到的值总是小于
。因此模运算可以被看作一个环(Ring),也称为整数模
的环(关于环的定义见2.9.2节),余数在这个环中怎么都跳不出去,最大值是
。记作:
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01544.jpg?sign=1739113138-RzRmiTj4yq311zMNkkvTcmKz3bw88VBl-0-02806e49775c7129ce6c9765538a0ca6)
除此之外,当时,那么就会存在一个关于
的逆元
,使得
。注意在模运算中,
。下面通过一个例子来了解如何计算
。
例2.4.4 设模数,
。求
。
解:很明显,因为它们都是素数。因此必有
。由于
,所以
。
同理,如果,
,那么
。
因此规定,如果整数存在模
的逆元,当且仅当
。记作
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01689.jpg?sign=1739113138-CeuisiKNIYAFSmeH8Q5iiUj8OfLYUTEx-0-911b9a7706d3eda85423a5f3ab6eb149)
也叫整数模
乘法群(单位群),该群是数论的基础,在密码学中有非常重要的作用,特别是在素性测试中运用甚广。
例2.4.5 求和
。
解:因为11是素数,所以都与11互素,因此很容易得到:
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01708.jpg?sign=1739113138-84WsxmJHzEKV105iXbBbJnndQd4q0v6Y-0-58b65ed2813d239c23a1ebca11e8e597)
24是一个合数,所以小于24的其他合数都不是它的整数模的单位,因此只能从小于24的素数中选择。而3是24的一个因子,因此需要排除3 。经过相似步骤,最后可得:
![](https://epubservercos.yuewen.com/3B24BD/31309821707952606/epubprivate/OEBPS/Images/tx01710.jpg?sign=1739113138-wMHK6FvUmJ5Jysnlq1hxKNOIkDyKPpHk-0-277775e10143a914bad3f24c52f6ca6f)