详细介绍RSA加密算法(数学原理,实现过程),并举例说明如何将一个简单的明文利用此算法进行加密?

文学痞子


一什么是RSA

RSA是一种密码体制。RSA加密算法是一种非对称加密算法。在公开密钥加密和电子商业中RSA被广泛使用。RSA是目前使用最广泛的公钥密码体制之一。为它是信息通信安全的基石,保证了加密数据不会被破解

二密钥发展历史

1976年以前,所有的加密方法都是同一种方式:

(1)甲方选择某一种加密规则,对信息进行加密;

(2)乙方使用同一种规则,对信息进行解密。

由于加密和解密使用同样规则(规则就简称"密钥"),这就是"对称加密"。

这种模式必须解决一个问题:通信双方必须同时拥有“密钥”,也就是说,把信息加密解决的问题,转化为密钥的保存和传递,就成了最头疼的问题。

1976年,两位美国计算机学家Whitfield Diffie 和 Martin Hellman,提出了一种全新的思路,解决密钥的保存和传递问题,这就是著名的"Diffie-Hellman密钥交换算法"。这个算法的原理就是:加密和解密可以使用不同的规则,这要规则间有某种关联关系,可以推导出密钥,就避免了直接传递密钥。这种新的加密模式被称为"非对称加密算法"。

1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出了RSA,"非对称加密算法


鲜事


RSA取自三个发明者罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)名字的首字母,1977年提出至今仍被广泛应用,是一种非对称加密算法。

RSA算法基于的原理,基本上来说,加密和解密数据围绕着模幂运算,这是取模计算中的一种。取模计算是整数计算中的一种常见形式。x mod n的结果就是x / n的余数。比如,40 mod 13 = 1,因为40 / 13 = 3,余数为1。模幂运算就是计算a mod n的过程。

使用RSA算法对数据进行加密和解密,首先要确定分组的大小。为了实现这一步,必须确保该分组可以保存的最大数值要小于n的位数。比如,如果p和q都是200位数字的素数,则n的结果将小于400位。因而,所选择的分组所能保存的最大值应该要以是接近于400。在实践中,通常选择的位数都是比n小的2的整数次幂。比如,如果n是209,要选择的分组大小就是7位,因为2 = 128比209小,但2 = 256又大于209。

要从缓冲区M中加密第(i)组明文M,使用公钥(e,n)来获取M的数值,对其求e次幂,然后再对n取模。这将产生一组密文C。对n的取模操作确保了C将和明文的分组大小保持一致。因而,要加密明文分组有:

C = M mod n

之前提到过,欧拉函数是采用幂模运算来加密数据的基础,根据欧拉函数及其推导式,能够将密文解密回原文。

要对缓冲区中C中的第(i)组密文进行解密,使用私钥(d,n)来获取C的数值部分,对其求d次幂,然后再对n取模。这将产生一组明文M。因此,要解密密文分组有:

M = C mod n

图示:采用二进制平方-乘算法来计算模幂

授人以鱼不如授人以渔,以上资料整理自网络,谢谢。


分享到:


相關文章: