非对称加密算法-RSA
一、对称加密与非对称加密的区别
1、在上一篇文章“HTTPS详解”中提到在密码学中有在两大体制,一种为单钥加密体制,另一种为双钥加密体制。而单钥加密便是我们所说的对称加密,双钥加密便是非对称加密。
https://www.jianshu.com/p/b7ce96e1f3b9
2、在最早期人类传统的通讯加密方式便是采用的对称加密,双方协商好相同的密文,对信息数据进行传输解译。在二战期间的电报数据传输便分为两种,一种是明文电报,另一种是军事机密采用密文电报,译电员在破译密文时必须使用早已协商好的密文本进行数据破译。此种方式也可以理解成一种早期的对称加密。
3、由于单钥加密采用相同密文,假设针对不同的用户,那我们将需要生成不同的密钥来保证数据的安全性。如果这么做那我们所维护的密钥也将是非常庞大的。而双钥加密采用不同的密钥,即使针对不同的用户,也只需要将公钥公开即可。
二、非对称加密算法RSA、ECC
1、常用非对称加密:RSA
RSA算法:RSA是第一个比较完善的公开密钥算法。RSA算法是基于十分简单的数论事实,其公钥和私钥是一对大素数(100到200位十进制数或更大)的函数,从一个公钥和密文恢复出明文的难度,等价于分解两个大素数之积(这是公认的数学难题)。
RSA加密具体步骤如下:
(1)取一对不同的素数(这对素数要足够大),用p 和 q来表示,这一对素数要保密。
(2)计算这对素质的乘积 用n来表示 n=p*q
(3)计算f(n)=(q-1)*(p-1)
(4)取一个与f(n)互质的数 ,用e表示。e > 1 并且 e < f(n)
(5)计算de≡1 mod f(n) 这个公式也可以表达为d ≡e-1 mod f(n) ≡表示同余的符号,即左右两边模运算结果相同,如(10 mod 3 ≡ 5 mod 2 ),左右模运算结果都为1,即公式成立。因为公式右边1 mod f(n) 无论f(n)为何数,余结果一定是1,因此只需左边d与e的乘积取模运算后也必须为1,因此需要运算出d的结果,使公式成立。
(6)公钥KU=(e,n) 私钥KR=(d,n)
(7)加密过程为,将一段明文数据变换成0至n-1的一个整数M。设密文为C,则加密过程为C≡M^e( mod n)
(8)解密过程为,M≡C^d(mod n)
2、何为素数
假设素数为N,N为整数,如果要找到两个“整数”相乘得积得到该素数N,那么结果一定仅能是N=N*1。它除了能表示为它自己和1的乘积以外,不能表示为任何其它“两个整数”的乘积。比如整数6,既可以6*1=6,也可以2*3=6,因此6不是素数。而整数13,仅能13*1=13,因此13是一个素数。素数也称为质数。2、7、11、13、17都为素数(质数)
3、何为互质
互质是公约数只有1的两个整数,叫做互质整数。公约数只有1的两个自然数,叫做互质自然数,后者是前者的特殊情形。
4、何为模指数运算
模运算:假设有一个整数10,以4进行模运算。表示10 mod 4 。使用10除以4,取所得余数为结果,该结果便是模运算结果。10 mod 4 = 2 10 mod 3 = 1 13 mod 5 = 3。
指数:指数是幂运算aⁿ(a≠0)中的一个参数,a为底数,n为指数。当n是一个正整数,aⁿ表示n个a连乘。当 a=10,n=3 ,则 aⁿ = 10 * 10 * 10
模指数运算:先做指数运算,取其结果再做模运算
三、对称加密:DES、3DES、AES
下篇文章介绍对称加密算法-DES、3DES、AES