网站定制开发北京,莆田网站建设外贸,各省网站备案条件,怎么制作网站预备知识 1#xff09;RSA是第一个比较完善的公开密钥算法#xff0c;它既能用于加密#xff0c;也能用于数字签名。RSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名#xff0c;这个算法经受住了多年深入的密码分析#xff0c;虽然密码分析者… 预备知识 1RSA是第一个比较完善的公开密钥算法它既能用于加密也能用于数字签名。RSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名这个算法经受住了多年深入的密码分析虽然密码分析者既不能证明也不能否定RSA的安全性但这恰恰说明该算法有一定的可信性目前它已经成为最流行的公开密钥算法。 2) 什么是“素数” 素数是这样的整数它除了能表示为它自己和1的乘积以外不能表示为任何其它两个整数的乘积。例如1535所以15不是素数又如126243所以12也不是素数。另一方面13除了等于131以外不能表示为其它任何两个整数的乘积所以13是一个素数。素数也称为“质数”。 3什么是“互质数”或“互素数” 数学教材对互质数是这样定义的“公约数只有1的两个数叫做互质数。”这里所说的“两个数”是指自然数。 判别方法主要有以下几种不限于此 1两个质数一定是互质数。例如2与7、13与19。 2一个质数如果不能整除另一个合数这两个数为互质数。例如3与10、5与26。 31不是质数也不是合数它和任何一个自然数在一起都是互质数。如1和9908。 4相邻的两个自然数是互质数。如15与16。 5相邻的两个奇数是互质数。如49与51。 6大数是质数的两个数是互质数。如97与88。 7小数是质数大数不是小数的倍数的两个数是互质数。如7和16。 8两个数都是合数二数差又较大小数所有的质因数都不是大数的约数这两个数是互质数。如357与7153573×7×17而3、7和17都不是715的约数这两个数为互质数。等等。 4非对称加密算法asymmetric cryptographic algorithm又名“公开密钥加密算法”非对称加密算法需要两个密钥公开密钥publickey和私有密钥privatekey。公开密钥与私有密钥是一对如果用公开密钥对数据进行加密只有用对应的私有密钥才能解密如果用私有密钥对数据进行加密那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥所以这种算法叫作非对称加密算法。 5) 什么是模指数运算 模运算是整数运算有一个整数m以n为模做模运算即m mod n。怎样做呢让m去被n整除只取所得的余数作为结果就叫做模运算。例如10 mod 3126 mod 6228 mod 2 0等等。模指数运算就是先做指数运算取其结果再做模运算。如53 mod 7125 mod 76。 6RSA安全性分析 在公布RSA算法之后在使用RSA密码体制和分析RSA算法发现了一系列的算法本身脆弱性及其存在的问题。 1RSA公钥密码体制在加密或解密变化中涉及大量的数值计算其加密和解密的运算时间比较长这比数据加密标准DES的计算量开销大在一定程度上限制了它的应用范围以致于实际使用RSA密码体制无法用软件产品必须用超大规模集成电路的硬件产品。 2虽然提高NP*Q的位数会大大提高RSA密码体制的安全性但其计算量呈指数增长以致使其实现的难度增大实用性降低。 3RSA公钥密码体制的算法完整性指密钥控制加密或解密变换的唯一性和安全性指密码算法除密钥本身外不应该存在其它可破译密码体制的可能性沿有等进一步完善。 4RSA算法面临着数学方法的进步和计算机技术飞跃发展带来的破译密码能力日趋增强的严重挑战。因子分解问题有了长跑的发展1995年人类成功地分解了128位十进制数RSA密码算法破译512位长的RSA指日可待。 尽管如此自1978年RSA算法公布以来公开密钥密码已从理论研究进入实际应用研究阶段。RSA公开密钥密码算法在信息交换过程中使用比较广泛安全性比较高。以当前的计算机水平如选择1024位长的密钥相当于300位十进制数字就认为是无法攻破的。 7CAP(Cryptographic Analysis Program)是由DR. Richard Spillman专门为教学而研制的密码制作与分析工具已经在美国的很多高校得到了广泛地使用受到了密码学习者的普遍欢迎。 公钥和私钥的简单理解 初学的话对于公钥和私钥的理解是一个问题我自己就是这样(*/ω*)所以我们再来说一下对于公钥和私钥的一个简单的认识。我在网上找了一篇我理解了下面放出来让大家参考一下 原文地址https://blog.csdn.net/tabactivity/article/details/49685319 一、公钥加密 假设一下我找了两个数字一个是1一个是2。我喜欢2这个数字就保留起来不告诉你们(私钥然后我告诉大家1是我的公钥。 我有一个文件不能让别人看我就用1加密了。别人找到了这个文件但是他不知道2就是解密的私钥啊所以他解不开只有我可以用 数字2就是我的私钥来解密。这样我就可以保护数据了。 我的好朋友x用我的公钥1加密了字符a加密后成了b放在网上。别人偷到了这个文件但是别人解不开因为别人不知道2就是我的私钥 只有我才能解密解密后就得到a。这样我们就可以传送加密的数据了。 二、私钥签名 如果我用私钥加密一段数据当然只有我可以用私钥加密因为只有我知道2是我的私钥结果所有的人都看到我的内容了因为他们都知 道我的公钥是1那么这种加密有什么用处呢 但是我的好朋友x说有人冒充我给他发信。怎么办呢我把我要发的信内容是c用我的私钥2加密加密后的内容是d发给x再告诉他 解密看是不是c。他用我的公钥1解密发现果然是c。 这个时候他会想到能够用我的公钥解密的数据必然是用我的私钥加的密。只有我知道我得私钥因此他就可以确认确实是我发的东西。 这样我们就能确认发送方身份了。这个过程叫做数字签名。当然具体的过程要稍微复杂一些。用私钥来加密数据用途就是数字签名。 举例 比如有两个用户Alice和BobAlice想把一段明文通过双钥加密的技术发送给BobBob有一对公钥和私钥那么加密解密的过程如下 Bob将他的公开密钥传送给Alice。Alice用Bob的公开密钥加密她的消息然后传送给Bob。Bob用他的私人密钥解密Alice的消息。 上面的过程可以用下图表示Alice使用Bob的公钥进行加密Bob用自己的私钥进行解密。 RSA加解密算法的原理 首先产生密钥过程如下 随机产生两个长度为K/2位的素数P 和 Q 计算公钥 publicKeyP*Q;(publicKey 是k位的长度) 随机产生一个加密密钥 keyE, 2keyEΦ(n)-1其中GCD(keyE, Φ(n))1注这是保证解密密钥keyE *keyD mod Φ(n)1 有解的充要条件Φ(n)称为n的欧拉函数,值为: Φ(n)(P-1)*(Q-1) 求解解密密钥keyDkeyE-1 mod (n) keyE-1为解密密钥keyD的逆元 此公式原方程为(keyE*keyD mod (n)1) 由此公钥加密密钥解密密钥全部产生。 其次对明文加密或对密文进行解密,过程如下 (1) 加密: C MkeyE mod publicKey;其中M表示明文C表示密文 (2) 解密: M CkeyD mod publicKey. 其中M表示明文C表示密文 RSA加密学习的简单例子转载 我在网上看到一篇文章如下通过简单的举例我更理解了RSA算法的神奇作者的举例很棒。 在RSA中最大值(称为max)由随机挑选的两个素数相乘而得。公钥和密钥在0和最大值之间挑选称为pub和priv。为了加密一个数字让这个数字自己乘自己pub次并确保当乘积大于最大值时能够回折像时钟一样。解密时再用这个加密得到的结果自己乘自己priv次便能退回到原始的数字。这是一件很神奇的事情但是它确实被实现了。 为了创建RSA密钥对首先得随机的挑选两个素数来计算出max。然后从0到max中再挑选出公钥pub只要知道两个素数那么就能够从pub中算出私钥。这就是为什么因式分解与破解RSA有关—对max的因式分解可以得到两个素数这样你便能够通过pub计算出某人的私钥从而来解密消息。 让我们举一个更加具体的例子吧。挑选素数13和7。他们积为91也就是max。从0到91中挑选5作为pub来加密。利用算法Extended Euclidean输入参数:7135得到私钥是29。 三个参数(max:91,pub:5,priv:29)定义了RSA系统。这时可以取一个数字通过乘自己5次来加密自己然后取这个结果乘自己29次来回到原来的数字。 让我们来加密“CLOUD”。为了能够用数学来表示一个消息我们必须将字母转变为数字。一个常用的转换方法是UTF-8。每个字母对应一个数字如下图 经过编码后的“CLOUD”是6776798568。每个数字都小于最大值91所以我们能够各自对他们进行加密为了简便我们以第一个字母为例 我们让67乘5次来加密自己 67x67448930(回折) (回折因为4489大于最大值max所以我们必须回折它。我们将它除以91然后取余数, 448991x4930) 30x6720108 8x6753681 81x67542758 这个结果说明67加密后为58。 为每个字母重复这个过程我们可以加密CLOUD。 为了解密我们需要让58乘自己29次。 58x58336488 88x5851048 … 9x5852267 神奇的事情发生了我们变回了67。 RSA加密学习的简单例子 原文地址https://blog.csdn.net/dianqu6970/article/details/76527572 两道简单的选择题如下 1、在密码学中对RSA的描述是正确的是 ARSA是秘密密钥算法和对称密钥算法BRSA是非对称密钥算法和公钥算法CRSA是秘密密钥算法和非对称密钥算法DRSA是公钥算法和对称密钥算法 RSA就是非对称的密钥算法 也是公钥算法啊 2、在RSA公钥密码系统中若A想给B发送一封邮件并且想让B知道邮件是A发出的则A应选用的签名密钥是A的私钥加密时用对方的公钥这种做法正确吗 A正确B错误私钥用于数字签名公钥用于验证让B知道是A发出的当然得用A的私钥啊~ 公钥和私钥是成对的它们互相解密。 公钥加密私钥解密。 私钥数字签名公钥验证。 转载于:https://www.cnblogs.com/threesoil/p/9906818.html