我自己对公钥,私钥,加密,解密,验签,签名的理解

公钥

每个用户都有自己的公钥,当然公钥可以通过,其他的加密模块生成。

私钥

私钥和公钥通常是成对出现,通过某些加密模块,导入公钥,可以获得私钥。

加密

公钥负责加密

解密

私钥负责解密

签名

私钥加密文件叫做签名

验签

公钥解密文件叫做验签

具体的应用场景

A和B现在要互相传输数据。且A拥有自己的公钥和密钥,B也拥有自己的公钥和密钥。

加密:因此A可以用自己的公钥加密一段需要传输的数据,但是要解开这段数据,只能使用A自己的私钥。B也同理用自己的公钥加密数据后,只能自己的私钥解密数据。

签名:反之如果A用自己的私钥加密了数据,最后还是只能用自己的公钥来解密数据。正如公钥和私钥的名字一样公钥是可以分享给别人知道的,但是私钥不行,是属于自己的私密。

基于这个道理,我们可以把公钥告知别人,别人用我们告知的公钥来加密数据传输给我们自己,我们自己是不是就可以用自己独有的私钥解密这个数据。

数据加密通信:A和B要加密通信,A把公钥传输给了B,然后B用A的公钥加密了数据,传输给A,A收到了数据,用自己的私钥解密了数据,同样,A可以用B的公钥加密了数据传输给B。

但是这个时候可能会出现一个问题,就是A把自己的公钥发给了B,有个小偷,在中途看到了这段信息里的A的公钥,那么这个小偷是不是就可以给我们发送虚假信息,从而误导A,A就不能确定这个数据是B发过来的还是小偷发过来的。这个时候就引入了签名的概念。

签名:B在用A的公钥加密完数据后,再用B自己的私钥加密这段数据,这个时候是不是就只能B自己的公钥来解密了,要想获取这段数据的具体类容还得拥有A的私钥。

具体过程如下

A用自己的私钥加密原始数据C(这个步骤叫签名,方便后面确认是A发送的)加密后为数据D,再用B的公钥加密数据D(这个步骤叫加密,方便后面B用B的私钥解密这个数据),数据变成E(最后将数据D和数据E都发给B)
B收到这个数据E后,先用A的公钥解密,验证解密后的数据是否和发过来的数据D相同(这个步骤叫验签,确认数据E解密后是不是数据D,即确认是A发送的),B再用B的私钥解密数据D(得到想要的数据C)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值