RSA 加密算法原理简述

RSA 加密算法原理简述概述本文旨在说明RSA加密算法的原理及实现,而其相关的数学部分的证明则不是本文内容。版权说明著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。作者:Q-WHai发表日期:2016年2月29日本文链接:http://blog.csdn.net/lemon_tree12138/article/details/50696926来源:CSDN…

大家好,又见面了,我是你们的朋友全栈君。

概述

  本文旨在说明RSA加密算法的原理及实现,而其相关的数学部分的证明则不是本文内容。

 

版权说明

著作权归作者所有。

商业转载请联系作者获得授权,非商业转载请注明出处。

作者:Q-WHai

发表日期: 2016年2月29日

本文链接:http://blog.csdn.net/lemon_tree12138/article/details/50696926

来源:CSDN

更多内容:分类 » 数据加密与信息安全

 

RSA简介

  1977年,三位数学家Rivest、Shamir 和 Adleman 设计了一种算法,可以实现非对称加密。这种算法用他们三个人的名字命名,叫做RSA算法。从那时直到现在,RSA算法一直是最广为使用的”非对称加密算法”。毫不夸张地说,只要有计算机网络的地方,就有RSA算法。

                                                                                   — 摘自网络

 

数学背景

  此部分旨在补充本文的完整性。如果说你已经了解,或是不想了解此部分内容。那么可以直接跳过此部分的阅读。

  虽说只是补充说明(只能是补充的原因是因为博主的数学也是比较差的-_-!!!),但是此部分的内容却是相当重要的。博主还是希望可以重新阅读一下此部分。

1.互质

  从小学开始,我们就了解了什么是质数。互质是针对多个数字而言的,如果两个正整数,除了1以外,没有其他公因子,那么就称这两个数是互质关系(注意,这里并没有说这两个数一定是质数或有一个为质数。比如15跟4就是互质关系)。以下有一些关于质数与互质的性质:

 

  • 质数只能被1和它自身整除
  • 任意两个质数都是互质关系
  • 如果两个数之中,较大的那个数是质数,则两者构成互质关系
  • 如果两个数之中,较小的那个数是质数,且较大数不为较小数的整数倍,则两者构成互质关系
  • 1和任意一个自然数是都是互质关系
  • p是大于1的整数,则p和p-1构成互质关系
  • p是大于1的奇数,则p和p-2构成互质关系

 

2.欧拉函数

  欧拉函数是求小于x并且和x互质的数的个数。其通式为:φ(x) = x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn)

  其中p1, p2……pn为x的所有质因数,x是不为0的整数。看到这里是不是有一些头疼,太理论的东西的确不够具象。我们且不去理会后面公式计算与论证,因为已经超出本文的范围了。就前一句来说说吧,欧拉函数是求小于x并且和x互质的数的个数。这里我可以列举一个例子:

  令x = 16,那么x的所有质因数为:φ(16) = 16 * (1 – 1/2) = 8

  我们也可以枚举出所有比16小,且与16互质的数:1, 3, 5, 7, 9, 11, 13, 15

  现在也给出部分欧拉函数的性质:

 

  • 若n是素数p的k次幂,RSA 加密算法原理简述,因为除了p的倍数外,其他数都跟n互质
  • 欧拉函数是积性函数——若m,n互质,RSA 加密算法原理简述
  • 当n为奇数时,RSA 加密算法原理简述
  • p是素数,RSA 加密算法原理简述,φ(p)称为p的欧拉值

 

  欧拉函数更多参考请见这里的链接

 

3.模反元素

定义:如果两个正整数a和n互质,那么一定可以找到整数b,使得 ab-1 被n整除,或者说ab被n除的余数是1。

关于模反元素的求解,使用的是朴素的解法。如果读者想要更进一步了解的话,请自行搜索其他解法(比如:辗转相除法、欧几里德算法)。

 

RSA原理

  在RSA原理之前,我想还是有必要了解一下非对称加密算法的加密跟解密过程。下面就是一幅非称加密算法的流程图。

  RSA 加密算法原理简述

  在此可以看到,非对称加密是通过两个密钥(公钥-私钥)来实现对数据的加密和解密的。公钥用于加密,私钥用于解密。对于非对称的加密和解密为什么可以使用不同的密钥来进行,这些都是数学上的问题了。不同的非对称加密算法也会应用到不同的数学知识。上面也对RSA中使用的数学问题做了一个小小的介绍。现在就来看看RSA算法是怎么来对数据进行加密的吧,如下是一幅RSA加密算法流程及加密过程图。

  RSA 加密算法原理简述

 

RSA算法优点

  1. 不需要进行密钥传递,提高了安全性
  2. 可以进行数字签名认证

RSA算法缺点

  1. 加密解密效率不高,一般只适用于处理小量数据(如:密钥)
  2. 容易遭受小指数攻击

 

其他加密算法相关参考:

 

AES 加密算法的原理详解:https://blog.csdn.net/gulang03/article/details/81175854

Java实现AES和RSA算法:https://blog.csdn.net/gulang03/article/details/81771341

 

JS 与 JAVA 跨语言实现 RSA 和 AES加密算法:https://blog.csdn.net/gulang03/article/details/82230408

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131583.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 安装cgal_cgi3.2

    安装cgal_cgi3.2在VisualStudio2008中安装CGAl(注意:整个安装过程需要网络连接,最后指示如何在windows中增加环境变量)1、下载需要的安装文件1)、首先下载CGAL(3.4)的安装程序,从http://gforge.inria.fr/frs/?group_id=52(在页面的最下面)2)、获得最新版本的CMake(目前是2.6.3),从http://www.cmake.or

  • 用混淆矩阵计算kappa系数「建议收藏」

    用混淆矩阵计算kappa系数「建议收藏」从一篇论文——融合注意力机制和高效网络的糖尿病视网膜病变识别与分类,看到人家除了特异性、敏感性、准确率、混淆矩阵以外,还用了加权kappa系数,所以了解一下kapp系数的知识,加权kappa还没找到更好的资料。。。资料来源于百度百科词条——kappa系数Kappa系数用于一致性检验,也可以用于衡量分类精度,但kappa系数的计算是基于混淆矩阵的.kappa系数是一种衡量分类精度的指标。它是通过把所有地表真实分类中的像元总数(N)乘以混淆矩阵对角线(Xkk)的和,再减去某一类地表真实像元总数与该类中被

  • html、css 实现二级菜单「建议收藏」

    html、css 实现二级菜单「建议收藏」利用html、css实现二级菜单,一级菜单用浮动,二级菜单用定位

  • MySQL生产环境主从关系数据不同步

    MySQL生产环境主从关系数据不同步

  • 苹果套路直播计算机隐藏版,套路计算器app,套路计算器隐藏官网版app预约 v1.0 – 浏览器家园…

    苹果套路直播计算机隐藏版,套路计算器app,套路计算器隐藏官网版app预约 v1.0 – 浏览器家园…套路计算器隐藏官网版app软件是一款最新人气计算器玩法,大家可以在这里发现非常多有趣的玩法,超级适合大家进行整蛊以及活跃气氛适应的,计算器里面会有各种好玩有趣的公式,帮你计算出各种想要的问题回答,非常类似于星座方面的玩法,说不定可以帮你解决你心中的各种问题疑问,如果你想尝试的话,就赶紧下载体验吧。套路计算器隐藏官网版app软件特色:1、玩法非常简单,输入自己的想要提的问题,就可以自动算出结果!2、…

  • 为什么当程序员?来听听漂亮国程序员的理由

    为什么当程序员?来听听漂亮国程序员的理由看看在国外当程序员的理由,与我们国内有什么不同!

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号