前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据加密之加密算法RSA公钥加密系统

数据加密之加密算法RSA公钥加密系统

作者头像
赵腰静
发布2018-03-09 14:35:13
2.1K0
发布2018-03-09 14:35:13
举报
文章被收录于专栏:程序猿

本来想写一下SQL注入来着,还是写一下这个可爱的算法吧。

加密算法有多中,md5等多中加密算法,但是RSA算法不知各位有没有听说过,它的由来就不阐述了.。我们都知道,密钥加密系统,甲方选择某种加密方式,对消息进行加密。然后乙方根据这个加密规则进行解密,这种类型的加密解密算法是对称加密算法。对称加密算法,乙方必须要知道密钥才行,这也是一种弊端吧。

那么就有了不对称的算法,这是如何呢?

乙方生成两个密钥,一个公钥,一个私钥,公钥是公开的,别人都可以知道,私钥是保密的,只有有乙方知道。

然后,甲方通过乙方的公钥加密消息,传递给乙方;

最后,乙方通过私钥解密即可。

RSA算法用到一点数论的知识点:

1、素数或者强质数,都是一个意思,就是除了1和它本身以外不再有其他的因数;否则称为合数。

2、欧拉函数和欧拉定理。因为原理部分需要有一堆随机质数的参与,对素数的密度测试,需要用到定理。

3、模指运算。模指数运算就是先做指数运算,取其结果再做模运算。为什么不叫指模运算,我也不知道。

通过公钥加密系统,可以对传输两个通信单位之间的消息进行加密,即使窃听者听到被加密的消息,也不能对其进行破译,公钥加密系统还能让通信的一方,在电子消息的末尾附加一个无法伪造的数字签名,这种签名是纸质文件上手写签名的电子版本。

对于上面的定理,就不对说那么多了,有兴趣的可以在单独做一篇推文,还有rsa的正确性,暂时不证明了。

在RSA公钥加密系统中:

1、随机选取两个大素数,p和q,越大越难破解。p!=q;

2、计算n=p*q;

3、计算f(n)=(p-1)(q-1),同时对p, q严加保密,选取一个与f(n)互质的小奇数e。

4、对于模f(n),计算出e的乘法逆元d的的值。

5、计算d,使得de≡1 mod f(n)。这个公式也可以表达为d ≡e-1 mod f(n) ,≡是数论中表示同余的符号。≡符号的左边必须和符号右边同余,就是两边模运算结果相同。不管f(n)取什么值,符号右边1 mod f(n)的结果都等于1;符号的左边d与e的乘积做模运算后的结果也必须等于1。这就需要计算出d的值,让这个同余等式能够成立。

6、将对P=(e,n)公开,并作为参与者的RSA公钥;(加密过程)

7、使对S=(d,n)公开,并作为参与者的RSA密钥;(解密过程)

为了变换与公钥P=(e,n)相关的消息M,计算P(M)=(M^e)mod n;

为了变换与密钥S=(d,n)相关的密文C,计算S(C)=(C^d)mod n;

等式对加密的签名是通用的。

RSA的原理核心已经写完。。。。。。

附带一段代码,是Python的,有兴趣的可以看下。

已经长传之paste.ubuntu.com,放在文章打不开,大家可以回复关键字“1”

查看。

如有错误,肯请指正。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据库SQL 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档