非对称加密算法-RSA

一、对称加密与非对称加密的区别


1、在上一篇文章“HTTPS详解”中提到在密码学中有在两大体制,一种为单钥加密体制,另一种为双钥加密体制。而单钥加密便是我们所说的对称加密,双钥加密便是非对称加密。

HTTPS详解

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

你可能感兴趣的:(非对称加密算法-RSA)