以最通俗易懂的方式解释rsa算法

如今,网络安全和ctf在青少年中变得更加受欢迎 ,但网络安全有许许多多难以理解的概念,笔者写此文章时候为初三学生,热爱ctf,我接下来将以通俗易懂的方式讲解ctf中的rsa算法中的基础内容,以便于更多学习者理解,如果有不少人看的话,下期会讲椭圆曲线算法或者DH算法。有错误欢迎纠正,有建议欢迎提出。

了解rsa算法,首先要知道以下几个概念:

1,素数,也就是质数,是指一个数的因数除了他自己和1本身没有别的因数,如2的因数只有1,2,3的因数只有1,3,所以2,3都是质数,6的因数有1,2,3,6,所以6不是质数 。

2,余数,当一个数除以另一个数除不尽的时候,余下的数为余数,例如5除以3余2,7除以3余1等等,余数在编程中(以Python3为例,下同)一般用%符号表示。这里顺便拓展一个与余数有关的概念,地板除,我们都知道3/2=1.5,但是3//2=1这个代表3/2的结果向下取整,称之为地板除。

3,互质:两个数的公因数只有1,例如2和3,3和5等等,两个相邻的大于零的自然数一定是互质的。

4,欧拉函数,常见表示方法有phi()或\phi,不少同学一看到函数就头痛,其实欧拉函数并没有那么难以理解,欧拉函数是指对于正整数n,小于或等于n的正整数中与n互质的数的数目,例如小于6并且与6互质的数只有5,所以6的欧拉函数为1,写作phi(6)=1或\phi(6)=1。很显然,质数的欧拉函数为它本身减1,例如7,小于7且与7互质的数有1,2,3,4,5,6.注意,1与所有自然数互质,欧拉函数算法在rsa中常考的有这几种:1,当x质因数为k1,k2时,phi(x)=(k1-1)*(k2-1)。

2,当x为质数时,phi(x)=x-1

当我们不知道这个数的质因数时,我们可以使用yafu.exe这个程序分解或打开在线网站factordb.com分解。

rsa算法生成

首先选两个素数p,q,计算n=p*q,p,q越大越安全,因为对于一个大整数n,计算p*q=n要比n分解为p,q简单非常多。

接着计算phi(n)=(p-1)(q-1)

随机选一个整数e为公钥,并且要满足1<e<phi(n)且与phi(n)互质,为了安全起见,e不应该等于2

接着算私钥d,使得ed%phi(n)=1,安全起见,p,q,d,phi(n)不应该公开

加密

(明文为M,密文为c)

c=m^e mod n(明文m的e次方除以n的余数为密文c)

在Python中常用pow函数进行运算,因此也可写作c=pow(m,e,n)

解密

m=c^d mod n(密文的d次方除以n的余数为明文m)

在Python中也可写作m=pow(c,d,n)

例子:(b站一个up的)

安全性

目前p,q大于800位是安全的,但这几年量子计算机的出现,则有可能带来危机。

补充:

rsa算法满足正向简单逆向困难的算法,类似的还有DH算法,DSA,椭圆曲线 。

结语

笔者初三了,面临中考,随缘更新吧,但绝对不会断更,各位看官们下期想看什么

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值