RSA加解密(非对称加密)

前置知识:

因数与模除

对于a x b = c(a,b为质数),已知a和b求c非常容易,但是已知c求a和b却只能用试除法,所以当数c非常庞大的时候,a和b的值将会因耗时太长而不可求

也就是说上述的过程乘法容易,倒推却非常难,同样的顺易逆难也展现在模除中:

a mod b = c,在a足够大时,已知 c 和 b ,得到a的希望十分渺茫

二者相结合,就是RSA加密难以被破解的精髓

欧拉函数 α(n) :

小于或等于n的正整数中与n互质的数的数目

易知,如果n为质数,则 α(n)=n−1

那么,对于质数a,b,若a x b = c, 则 α(c)=α(a)×α(b)=(a−1)×(b−1)

RSA加密过程:

1.发送方->公钥数字G与N,接收方->私钥S与N

加密:

2.发送方按照一定格式将明文变为十进制数字num

3.通过计算得到密文 M=num^G%N

解密:

4.接收方拿到M,计算 M^S%N 得到明文num

eg:

公钥(7,55) 密钥(23,55) 明文: 9 4 6

加密:

9^7 % 55 = 4

4^7%55=49

6^7%55=41

得到密文: 4 49 41

解密:

4^23 % 55 = 9

49^23 % 55 = 4

41^23 % 55 = 6

得到明文:9 4 6

看到这里或许你会发问了,前置中的欧拉函数和因数的知识好像都没有用到诶,不过我既然写出来了,就一定会用到,除非公钥G和私钥S的数字是凭空出现的,刚好让num^G^S % n = num

公钥密钥制作:

1.选取两个质数p和q,得到n = p x q

2.通过欧拉函数得到 t=α(n)=(p−1)×(q−1)

3.任意选取一个 大于0小于t 且 不能整除t的数G作为公钥

4.通过公式 (G×S)%t=1 得到私钥

分析:

在整个加解密过程中,对于第三方已知的只有公钥(S,N)以及密文M,如果不是歪打正着,就不可能完成明文=密文^? % N的解密

破解:

万法均为暴力破解,除非偷得到密钥........

如果有神仙突破天花板了当我没说

Notice:

已知p,q,公钥or私钥x 求 私钥or公钥y:

y = ((p-1)*(q-1) + 1) / x

拿原理就容易得到,欧拉函数加一再除以已知密钥 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UmVfX1BvaW50

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值