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

本来想写一下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”

查看。

如有错误,肯请指正。

原文发布于微信公众号 - 数据库SQL(SQLdba)

原文发表时间:2016-01-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏吴伟祥

加密 原

在日常设计及开发中,为确保数据传输和数据存储的安全,可通过特定的算法,将数据明文加密成复杂的密文。目前主流加密手段大致可分为单向加密和双向加密。

813
来自专栏jouypub

区块链之非对称加密算法

非对称加密,在现在网络应用中,有这非常广泛的场景,更是加密货币的基础。本文主要介绍非对称加密、解密的原理和过程,以及在区块链中的使用。

1851
来自专栏fangyangcoder

密码学笔记

看了李永乐老师的密码学视频,真的是收获满满,在这里记录一下。现代密码学分主要有两种加密方式,一种是对称加密,另一种是非对称加密,李永乐老师在视频中讲解了非常著名...

1563
来自专栏程序你好

区块链科普:非对称加密、椭圆曲线加密算法

区块链技术的应用和开发,数字加密技术是关键。一旦加密方法遭到破解,区块链的数据安全将受到挑战,区块链的不可篡改性将不复存在。

2052
来自专栏GAIAWORLD

GaiaWorld:加密技术在区块链中的意义

加密技术作为区块链技术里极其重要、不可或缺的一部分,为区块链的匿名性、不可篡改和不可伪造等特点保驾护航。如果说共识机制是区分一个公链质量的核心和灵魂,那么加密算...

1090
来自专栏企鹅号快讯

黑客们都是如何给勒索软件加密的?

加密是计算机科学中历史最长久的一种计算了。早在二战时期,德国就制造了Enigma密码机,来传输机密信息。计算机科学的祖师爷之一图灵也参与了对Enigma密码的破...

2269
来自专栏Albert陈凯

2018-10-11 对称加密、非对称加密、Hash算法看完这篇文章加解密就别蒙了散列函数 加密算法

http://hongyitong.github.io/2016/07/18/%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E3%8...

2903
来自专栏程序员叨叨叨

【翻译】数字签名是什么?

在写上一篇《Android Keystore漫谈》时对数字证书和数字签名的区别感觉模棱两可,于是网上找了找资料发现了一篇简单易懂的文章,对证书和签名有了一个较清...

874
来自专栏小工匠技术圈

【Java小工匠聊密码学】--非对称加密--RSA1

  RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(...

843
来自专栏码神联盟

敲一天代码了,轻松下吧,精彩 !看人潮如海

先来首歌曲,耶耶耶..... ? 一边听歌,一遍来看几个算法 一、数字摘要算法 数字摘要也称为消息摘要,它是一个唯一对应一个消息或文本的固定长度的值,它由一个...

2965

扫码关注云+社区

领取腾讯云代金券