标签:运算 公司 简单的 可靠 了解 ref str 介绍 article
对称加密:加密和解密都是用同一个密钥的算法,称作对称加密。
非对称加密:加密和解密需要不同的密钥。
RSA是一种非对称加密算法,它的名字由三位开发者,即Ron Rivest、Adi Shamir和Leonard Adleman的姓氏的首字母组成的。
RSA被用于公钥密码和数字签名。
1983年,RSA公司为RSA算法在美国取得了专利,但现在该专利已经过期。
在RSA中,明文、密钥和密文都是数字。
RSA加密
RSA的加密过程可以用下面的公式来表达:
RSA的密文是对代表了明文的数字的E次方求mod N的结果。就是将明文和自己做E次乘方,然后将其结果除以N求余数,这个余数就是密文。
E和N两个数字对RSA的加密结果起着决定性作用。
E和N两个数才组成一个公钥,因此我们一般会写出“公钥是(E,N)”或者“公钥是{E,N}”这样的形式
RSA解密
RSA的解密过程可以用下面的公式来表达:
该公式表示对密文的数字的D次方求mod N就可以得到明文。就是将密文自己做D次乘法,再对其结果除以N求余数,就可以得到明文。
D和N两个数字也对解密结果起着决定性机会,这里的N和RSA加密的N是同一个数字。
D和N两个数组成了一个私钥,因此我们一般会写出“私钥是(D,N)”或者“私钥是{D,N}”这样的形式
所以到这里我们似乎只要知道怎么产生公钥(E,N)和私钥(D,N)。
RSA加密与解密算法中,只用到素数、互质数、指数运算、模运算等几个简单的数学知识。所以,我们也需要了解这几个概念即可。
素数
素数又称质数,指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
互质数
百度百科上的解释是:公因数只有1的两个数,叫做互质数。;维基百科上的解释是:互质,又称互素。若N个整数的最大公因子是1,则称这N个整数互质。
常见的互质数判断方法主要有以下几种:
指数运算
指数运算又称乘方计算,计算结果称为幂。nm指将n自乘m次。把nm看作乘方的结果,叫做”n的m次幂”或”n的m次方”。其中,n称为“底数”,m称为“指数”。
模运算
模运算即求余运算。“模”是“Mod”的音译。和模运算紧密相关的一个概念是“同余”。数学上,当两个整数除以同一个正整数,若得相同余数,则二整数同余。
两个整数a,b,若它们除以正整数m所得的余数相等,则称a,b对于模m同余,记作: a ≡ b (mod m);读作:a同余于b模m,或者,a与b关于模m同余。例如:26 ≡ 14 (mod 12)。
使用Alice和他的小伙伴来举例子。
假设Alice想通过一个不可靠的媒体接受Bob的一条私人消息,他可以用下面的方式产生一个公钥和私钥。
其中(N,e)是公钥,(N,d)是私钥。
举个例子:
至此完成计算。
其中N=3233,e=17,d=2753。所以公钥就是(N,e)=(3233,17),私钥(N,d)=(3233,2753)。实际应用中公钥和私钥都是采用ASN.1格式表达的。
加密
加密要用到公钥(N,e)。
假设Bob要向Alice发送加密信息m,他就要用Alice的公钥(N,e)对m进行加密。但m必须是整数(字符串可以取ascii值或unicode值),且m必须小于n。
所谓加密就是计算下式的c。
m^e ≡ c (mod n)
假设m=65,Alice的公钥(3233,17),所以等式如下:
65^17≡2790(mod 3233)
所以c等于2790,Bob就把2790发给Alice。
解密
Alice收到Bob发来的2790后,就用自己的私钥(3233,2755)进行解密。
c^d ≡ m (mod n)
也就是c的d次方除以n的余数就是m。
2790^2753 ≡ 65 (mod 3233)
因此得到原文65。
refer:
https://blog.csdn.net/chengqiuming/article/details/82725137
https://www.jianshu.com/p/48ceec5e0124
http://www.ruanyifeng.com/blog/2013/07/rsa_algorithm_part_two.html
标签:运算 公司 简单的 可靠 了解 ref str 介绍 article
原文地址:https://www.cnblogs.com/-wenli/p/12539806.html