RSA加密与数字签名

如何分清公钥私钥,加密解密与签名认证之间的关系。简要说一下就是:

这三者没有关系!
这三者没有关系!
这三者没有关系!

首先RSA的数学原理前面有人讲得很清楚,简单说就是:RSA的密钥是一对,用一个加密,用另一个才能解密,反之亦然。

所以不管用哪一个加密,只要用另一个解密就行了!

然而,公钥加密系统的提出是为了解决对称加密中密钥传递的问题。比如AES,只有一个密钥K,加密解密都用它。假如A要给B发送一段保密信息,A可以用K进行加密,把密文发送给B,B再用K解密,得到明文信息。

这里面有一个存在风险的地方:B要解密只能用K,而K开始只有A知道,A要告诉B密钥K只能是明文形式的,既然是明文传递,就存在被人截取的风险。

而公钥加密系统里面就不存在这个问题了。它的思路是加密与解密用不同的密钥,这样就不用传递解密的密钥了。

关键是不用传递*解密*用的密钥!
关键是不用传递*解密*用的密钥!
关键是不用传递*解密*用的密钥!

在公钥加密系统里,私钥是保密的,也就是你一个人知道,公钥是公开的,所有人都知道。而且这个体系保证了:1、加密解密用一对密钥,一个加密一个解密,2、即便知道了加密用的密钥,也无法知道(不可计算或者多项式时间不可计算)解密用的密钥。

所以A与B进行保密通信的过程是:

A要给B发信息要用B的公钥加密,B用自己的私钥解密。而B给A发信息要用A的公钥加密,A用自己的私钥解密。

然后令题主产生困惑的签名认证过程与上面的信息传递是不一样的。不过知道了RSA为什么用公钥加密用私钥解密,这个问题也就很清楚了。

认证要解决的问题是你要证明一个东西(比如说文件)真是你的,怎么证明?

用私钥!因为只有你一个人知道!
用私钥!因为只有你一个人知道!
用私钥!因为只有你一个人知道!

而恰好RSA的两个密钥是对称的,随便哪一个加密,可以用另一个解密。所以可以用公钥去验证私钥。

所以一个认证过程大概是这样的:
A发布了一篇文章,说这是我发的,我用自己的私钥签名了。由于之前A已经发布了他的公钥,所以其它人可以用这个公钥去验证。因为知道A私钥的只可能是A自己。

核心就是:私钥只能自己知道!女朋友都不能告诉!

当然前面认证中发布的公钥的A怎么证明确实是A了?这分两种情况。

一是比如匿名论坛这种情景,签名主要是为了防冒充,所以你开始发布了公钥,后面用私钥签名了就可以证明这一系列都是同一个人,到底是谁不重要,因为本身就是为了匿名嘛!

总结一下:

1、 加密
A要给B发送数据,要想让数据只有B能够解密,而其他人即使获得了数据也无法解密。那么,可以在A发送数据之前用B给的公钥加密,B收到之后就可以用他自己的私钥(也只有B知道)来解密。
这种情况下,加密的是公钥,解密的是私钥。
2、数字签名
A想让网上的人确定某些文件是它发布的,它就可以:
先生成自己的公钥,然后发布给其他人;
然后在发布文件的时候,添加上自己的签名(可以通过对某个字符串X用A的私钥加密得到Y,将X和Y和文件一块发布);
其他人收到文件之后,会用A的公钥解密Y,得到Z,如果X=Z则说明该文件是A发布的
这种情况下,加密的是私钥,解密的是公钥

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值