RSA加密算法
图片丢失:请参考RSA 非对称加密原理(小白也能看懂哦~)
RSA数学基础
整除
如果 a 整除 b ,记为 a|b 。
若c = k1*a + k2 *b ,e|a 且 e|b , 则 e|c
最大公因子
所有同时整除 和 的整数中,最大的那个,称为 和 的最大公因子,记为 (a,b)
欧几里得算法(辗转相除法)
def gys(a, b):
if b == 0:
return a
return gys(b, a % b)
print( gys(8,4) )
扩展欧几里得算法
def egcd(a, b):
if b == 0:
return a, 1, 0
gcd, k1, k2 = egcd(b, a % b)
return gcd, k2, k1 - a / b * k2
# 扩展欧几里得算法
# k1 * a + k2 * b =(a,b)
print(f"公因数、k1、k2分别为:")
print( egcd(13,4) )
互素
最大公因子的最小可能取值是1,当 (a,b) = 1 ,即a和b的最大公因子为1时,我们称a和b互素。
乘法逆元
同余定理:给定一个正整数m,如果两个整数a和b满足a-b能够被m整除,即(a-b)/m得到一个整数,那么就称整数a与b对模m同余,记作a≡b(mod m)。对模m同余是整数的一个等价关系。
若a ≡ 0 (mod m),则 m|a;
例如:26 ≡ 2(mod 12)
(26 - 2)/ 12 = 2 能被整除
如果 ax ≡ 1 (mod p),且 gcd (a,p) = 1 (即 a与p互质),则称a关于模p的乘法逆元为x。
法一:利用扩展欧几里得算法
首先模就是余数,比如 12 % 5 = 12 - 52 = 2,18 % 4 =18 - 44 = 2。
那么 ax≡1 (mod p) => ax % p = 1% p => ax - yp = 1 。
若把y前的符号变成 + 的形式就是ax+py=1,为方便理解下面我们把p写成b就是ax+by=1。
就表示x是a的模b乘法逆元,y是b的模a乘法逆元。
例如,求5关于模14的乘法逆元:
(5,14) = 1 互素
5x ≡ 1 (mod 14)
5x - y14 = 1
所以x = 3 , y = 2 所以 3是5关于模14的乘法逆元
欧拉函数
就是对于一个正整数n,小于n且和n互质的正整数(包括1)的个数,记作φ(n) 。
欧拉函数的通式:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5HmAXOWp-1635524341277)(…/Pictures/typora/SouthEast)]
其中p1, p2……pn为n的所有质因数,n是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rQWjI7wY-1635524341279)(…/Pictures/typora/image-20211029233050721.png)]
举例说明:
φ(10)=10×(1-1/2)×(1-1/5)=4; 10的质因数为2,5;
φ(30)=30×(1-1/2)×(1-1/3)×(1-1/5)=8; 30的质因数为2,3,5;
φ(49)=49×(1-1/7)=42。 49的质因数为7
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kHFxsaQe-1635524341283)(…/Pictures/typora/image-20211029233005171.png)]
欧拉定理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-93CsjuGp-1635524341285)(…/Pictures/typora/image-20211029233348940.png)]
欧拉定理推论
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vMWsSXIk-1635524341287)(C:\Users\MG\AppData\Roaming\Typora\typora-user-images\image-20211029234301618.png)]
这个结论就有意思了, a 经过若干次幂再模 n 后又等于 a。
如果我们能把这个操作拆成两步,第一步不就是相当于加密,第二步不就相当于是解密!
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R9q0iLvd-1635524341290)(…/Pictures/typora/image-20211029235000960.png)]
RSA加密算法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c6Wirm8l-1635524341292)(…/Pictures/typora/image-20211029235133914.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oSXyKhFl-1635524341293)(…/Pictures/typora/image-20211029235155091.png)]
341290)]
RSA加密算法
[外链图片转存中…(img-c6Wirm8l-1635524341292)]
[外链图片转存中…(img-oSXyKhFl-1635524341293)]