算法篇——RSA算法

1.导语:公钥和私钥原理

公钥和私钥就是俗称的不对称加密方式,是从以前的对称加密(使用用户名与密码)方式的提高。我用电子邮件的方式说明一下原理。

使用公钥与私钥的目的就是实现安全的电子邮件,必须实现如下目的:

     1. 我发送给你的内容必须加密,在邮件的传输过程中不能被别人看到。
     2. 必须保证是我发送的邮件,不是别人冒充我的。

要达到这样的目标必须发送邮件的两人都有公钥和私钥

公钥,就是给大家用的,你可以通过电子邮件发布,可以通过网站让别人下载,公钥其实是用来加密/验章用的。私钥,就是自己的,必须非常小心保存,最好加上密码,私钥是用来解密/签章,首先就Key的所有权来说,私钥只有个人拥有。公钥与私钥的作用是:用公钥加密的内容只能用私钥解密,用私钥加密的内容只能用公钥解密。
比如说,我要给你发送一个加密的邮件。首先,我必须拥有你的公钥,你也必须拥有我的公钥。
首先,我用你的公钥给这个邮件加密,这样就保证这个邮件不被别人看到,而且保证这个邮件在传送过程中没有被修改。你收到邮件后,用你的私钥就可以解密,就能看到内容。其次我用我的私钥给这个邮件加密,发送到你手里后,你可以用我的公钥解密。因为私钥只有我手里有,这样就保证了这个邮件是我发送的。

当A->B资料时,A会使用B的公钥加密,这样才能确保只有B能解开,否则普罗大众都能解开加密的讯息,就是去了资料的保密性。验证方面则是使用签验章的机制,A传资料给大家时,会以自己的私钥做签章,如此所有收到讯息的人都可以用A的公钥进行验章,便可确认讯息是由 A 发出来的了。

2.Tip:

加密算法包括对称加密和非对称加密,对称加密就是加密和解密用一个秘钥,就像伪装者等电视剧里的电报加密一样,需要一个密码本,发送方通过它加密,接收方通过它解密,因此密码本非常重要,一旦泄露就会所有信息被窃取。也就有了特务护送密码本的桥段,缺点显而易见。
而非对称加密有两个秘钥,公钥和私钥。例如接收方先生成一对公钥私钥,公钥可以直接不加密发送给发送方,任何人都可以拿到。然后发送方用公钥加密,发送给接收方后,接收方用私钥可以解密,并且只有私钥能解密,公钥不能解密,只能加密。

如果伪装者里用非对称加密的方式,也就不用护送密码本了,于曼丽也不用死了。。。
但是非对称加密算法复杂,耗时,以当时的科技手段无法实现。
著名的RSA算法就是非对称加密的一种,是基于大数难以进行质因数分解设计的。加密等级越高,RSA位数就越长,目前常用1024bits。并且RSA算法除了加密以外还可以实现数字签名。就是证明A发送的信息确实是A发出的。公钥和私钥实际上地位平等,可以互相加密解密。即用公钥加密的密文可以用私钥解密,这就是加密过程,反过来用私钥加密的密文可以用公钥解密,也就是说大众可以用公钥对A发出的密文解密来验证信息确实是A发出的,这就是数字签名。

RSA速度很慢,一般只对少量信息进行加密。常用的做法是用RSA给对称加密密钥加密,发送给接收方。然后接收方解密知道了对称加密密钥,双方再通过对称加密方式通讯。

3.RSA算法

 
RSA密钥产生过程:
···
1.随机选择两个不相等的质数p和q(实际应用中,这两个质数越大,就越难破解)。
2.计算p和q的乘积n,n = pq。
3. 计算n的欧拉函数φ(n)。
4.随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。
5. 计算e对于φ(n)的模反元素d,使得de≡1 mod φ(n)。
6.产生公钥(e,n),私钥(d,n)。

实例描述:

选择p = 3, q = 11。
n = pq = 33。
φ(n) = (p - 1)(q - 1) = 20。
选择e = 3, 此时e与φ(n) 互质
(de)modφ(n) =(d*3)mod20=1,求出d=7。
公钥(3,33),私钥(7,33)。

例如对明文数字“5”加密,根据加密公式,密文=(5^3)mod(33) = 125 % 33 = 26
把上述密文解密,明文=26^7 % 33 = 8031810176 % 33 = 5。

附上个人基于RSA算法做到一个加解密的小项目:Github地址点击这里

发布了187 篇原创文章 · 获赞 208 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/tonglin12138/article/details/103635994