RSA算法及其加解密原理

RSA算法及其加解密原理

1.什么是RSA加密:

类型:非对称加密,通俗说就是加解密的密钥不同
原理:两个大素数相乘容易,但想要对其乘积进行因式分解却极其困难
公钥:加密明文使用的叫公钥。因为对大素数因式分解很困难,因此可以将乘积公开作为加密密钥,即KU=(e,n)
私钥:解密明文使用的叫私钥,即KR=(d,n)
在这里插入图片描述

2.一些字母表示:

(1) n=p*q:拆分大数n为两个大素数p和q
(2) φ(n)=(p-1)(q-1):欧拉函数。
(3) e:随机选择一个的整数(可负),条件是1<e<φ(n),且e与φ(n) 互质
(4) d :由e和φ生成,关系是ed ≡ 1 mod φ(n),读作ed同余于1模φ(n)
(5) 明文:要加密的东西,记作m
(6) 密文:要解密的东西,记作c

3.一些需要了解的数论基础:

(1) 欧拉函数:对于一个正整数n,小于n且和n互质的正整数的个数,记做φ(n),φ(1)被定义为1 。显然,对于质数p,q,满足φ(n) =(p-1)(q-1)
(2) 同余:a≡b (mod m),顾名思义是a,b对m取模的值相等,即余数相等
(3)同余的一些性质
[1]: 若a≡b (mod m),则a=km+b,或a-b=km,k为整数。因为同余,所以显然差值是m(被模数)的整数倍。
[2]:运算法则:(为方便观看,以下mod写为%,绝对不是懒得打)
(a+b)%p=(a%p+b%p)%p
(a*b)%p=(a%p*b%p)%p
(ab)%p=(a%p)b %p
[3]:若a≡b(%p),则(a+c)≡(b+c) (%p),同加不变
(4) 负数求正模:eg: -3 mod 26
step1>用-1乘26=-26
step2>凑回-3:(-1*26+23)=-3
step3>即求(-1*26+23) mod 26:根据运算法则得原式=(0+23 mod 26) mod 26
step4>原式=23

4.公私钥生成:

(1)随机找两个质数P和Q,P与Q越大,越安全。(例如:61和53)

(2)计算p和q的乘积n。(n=61×53=3233,n的长度就是密钥长度。3233写成二进制是110010100001,一共有12位,所以这个密钥就是12位。)

(3)计算 n 的欧拉函数φ(n)。(根据公式φ(n)=(p-1)(q-1)算出φ(3233)等于60×52,即3120)

(4)随机选择一个整数e,条件是1<e<φ(n),且e与φ(n) 互质。(条件是1<e<φ(n),且e与φ(n) 互质。1到3120之间,随机选择了17。)

(5)存在一个整数d,可以使得ed 除以φ(n) 的余数为 1,通过求e的模反数计算出d。(ed ≡ 1 (mod φ(n)),即17*2753 mode 3120=1)

(6)将n和e封装成公钥,n和d封装成私钥。(n=3233,e=17,d=2753,所以公钥就是:3233,17,私钥就是:3233, 2753。)

5.加密:

若明文过长则对明文进行比特串分组,使得每个分组对应的十进制数小于n,然后依次对每个分组m做一次加密,所有分组的密文构成的序列就是原始消息的加密结果,即m满足0<=m<n。
加密算法为:c=me mod n

6.解密:

解密算法为:m=cd mod n

7.举个例子:

已知p=3,q=11,m=20,描述加解密过程:

n=p*q=33
φ(n)=(p-1)(q-1)=2*10=20
取e∈(1,φ(n))=3 ——注:取为φ(n)+1的因数便于下面计算
3d mod 20 =1解得d=7
KU=(e,n)=(3.33)
KR=(d,n)=(7,33)
加密:c=me mod n=14
解密:m=cd mod n=20

8.RSA的证明:

已知c=me mod n,求证m=cd mod n:

从右往左证:将已知带入得cd mod n=(me mod n)d mod n=med mod n
由d的生成过程有ed ≡ 1 mod φ(n),所以ed=k * φ(n)+1:上式=m1+kφ(n) mod n=(m * mkφ(n)) mod n
要证上式=m,转化为证mkφ(n) =1,即消去mkφ(n)项,变为m mod n,然后显然等于m
做到这里需要补充费马小定理

费马小定理:若gcd(a,n)=1,即a和n互质,则 aφ(n) ≡ 1 mod n
可以称为:在模n的意义下,aφ(n)和1是“数论相等”的,即对模n同余
那么我们接着做:

由费马小定理可理解为mkφ(n) 和 1 “相等”:原式=m mod n=m
不想这么理解也可以用运算严格证明:原式=(m mod n)*(mkφ(n) mod n) mod n=m mod n=m

9.拓展欧几里德求乘法逆元(模反数):

在这里插入图片描述

10.RSA算法的优劣性:

优点:RSA算法是国际标准算法,属于主流算法之一,应用广泛,兼容性比较广,能够适用于各种不同的系统之中,不容易出现限制问题。

缺点:RSA算法加密长度为2048位,对于服务器的消耗是比较大的,计算速度也比较慢,效率偏低,一般只适用于处理小量数据。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值