【零基础】学python数据结构与算法笔记15-欧几里得、RSA

文章介绍了欧几里得算法用于求最大公约数,以及RSA非对称加密算法的工作原理和测试过程。RSA算法广泛应用于HTTPS和Linux系统的加密,其安全性基于大数分解的难度。此外,提到了贪心算法和动态规划在算法分析中的重要性。
摘要由CSDN通过智能技术生成


前言

学习python数据结构与算法,学习常用的算法,
b站学习链接

95.欧几里得算法

在这里插入图片描述

求最大公约数
欧几里得算法:gcd(a,b) = gcd(b,a mod b) #mod取余
例:gcd(60,21) = gcd(21,18) = gcd(18,3) = gcd(3,0) = 3

相同的部分拿掉,就相当于取余
在这里插入图片描述
然后继续拿掉相同的部分
在这里插入图片描述
在这里插入图片描述
最后只剩下一个21,几个21就相当于几个这个。
在这里插入图片描述
在这里插入图片描述
可以简单用欧几里得写一个分数的四则运算。
这里只写了加法python3:魔法函数__add__
在这里插入图片描述

96.RSA算法介绍

RSA是非对称加密。
传统密码是别人不知道加密方法,比方说说以前罗马皇帝发明了个加密算法,把字符都往后移三位,abc 发成def
以前的传统密码可以通过暴力枚举来求出来,而现在密码是加密算法是公开的,但没有密钥是解不出这个密文的。
在这里插入图片描述
Bob给Alice发密文,钥匙有两份,公钥大家都知道,是公开的,私钥是只有收件人才有的,只有它才可以破译知道密文是什么,窃密者不知道密文是什么。
在这里插入图片描述

97.RSA算法测试

RSA加密算法过程
在这里插入图片描述
首先我们取两个质数
p = 53
q = 59
n = pq = 3127
fai = (p-1)
(q-1) = 3016
取与fai互质的小奇数e = 3
第四步 略过计算,这些需要数论知识来求解 ,得出d = 2011
(3*2011%3016 = 1)
e和n组成公钥,d和n组成私钥,m是原文,因为所有数据通过电脑都能转换成01流,所以不是数字也没关系。
在这里插入图片描述
这里原文是m = 87,m可以随便换
密文c = 873%3127 = 1833 (加密过程)
m = 1833
2011%3127 = 87(解密过程)

到目前为止,市面上大多数加密都是RSA算法来加密的,像https里的s,linux系统里的加密都是RSA算法,目前没有人破解这个算法。
因为两个质子相乘很简单,求一个大数由哪两个质子相乘很难,数越大越难破解,因为只能一个一个枚举,如果你能拆开,只能说是这一对密钥你破解了,而不是算法能破解,破解了再生成一个新的密钥就需要重新来破。

98.算法课程总结

贪心算法和动态规划在《算法导论》里属于高级设计与分析的思想了,但在真正的算法领域还算是沧海一粟。

总结

学习了补充的两个算法,欧几里得和RSA


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值