数据加密之加密算法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 条评论
登录 后参与评论

相关文章

来自专栏linux驱动个人学习

高通Audio中ASOC的machine驱动

ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的...

9804
来自专栏MelonTeam专栏

Bitmap 源码阅读笔记

导语: Android 系统上的图片的处理,跟Bitmap 这个类脱不了关系,我们有必要去深入阅读里面的源码,以便在工作中能更好的处理Bitmap相关的问题...

2518
来自专栏码匠的流水账

spring security reactive获取security context

本文主要研究下reactive模式下的spring security context的获取。

1812
来自专栏张善友的专栏

VS.Net 2005 Design-Time Integration

Introduction This article provides an overview of the VS.NET 2005 Design-Time I...

1918
来自专栏一个会写诗的程序员的博客

java.base.jmod

/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/jmods$ jmod list java....

1112
来自专栏余生开发

echarts太阳分布图-饼图来回穿梭

var dom = document.getElementById("container");

1202
来自专栏一个会写诗的程序员的博客

java.sql.SQLException: connection holder is null

java.sql.SQLException: connection holder is null

1351
来自专栏搞前端的李蚊子

Html5模拟通讯录人员排序(sen.js)

// JavaScript Document  var PY_Json_Str = ""; var PY_Str_1 = ""; var PY_Str_...

6006
来自专栏c#开发者

XML Encryption in .Net

XML Encryption in .Net One of the new features being introduced with the Whidbey...

4387
来自专栏码匠的流水账

聊聊FilterSecurityInterceptor

本文就来研究一下spring security的FilterSecurityInterceptor

491

扫码关注云+社区