加签/验签、加密/解密、公钥/私钥

 
看了网上的很多资料,发现有些点没有说到,也比较复杂,这里根据个人的理解,简单描述,方便记忆。
 
先理解 公/私 钥(yue)的意思:
私钥,即  私人 的钥匙,是唯一的,所以可以用来证明来源是特定的人
公钥,即 公用 的钥匙,我可以将它给很多人(公众)。所以既然那么多人都知道,所以公钥并不能证明来源一定是特定的人
 
在理解 加密、签名 的作用:
   加密:用于防止信息外泄(泄露给不相关的人)
   签名:用于确认身份(可以类比下信用卡上的签名)
 
----> 到底谁 创建、拥有、使用 公/私 钥(yue)(这里很多人会混淆,而且网上很少有人说明,但很重要)? <----
 
加签/验签 为例:
  1. A 想 使用 我的服务,为了安全,我不希望 A 以外的人可以使用这些服务
     创建
      此时,我会要求 A 创建 一对 公私钥,私钥他自行保留(用于证明他自己的身份),公钥给我(用于验签--验证签名)
     拥有
      此时  我拥有 A 的公钥A 拥有自己的私钥
     使用:
      A 请求 我的服务 时,使用私钥签名( 具体如何签名,自行百度吧,这方面的内容真的很多
      我 收到请求后,用 A 给我的公钥 验签,验签通过即证明的确是A发送的请求,验证不通过当然是拒绝访问
    
  2. 那如果 A 调用我的服务之后,需要我返回请求结果,但又要保证一定是我返回的请求结果呢?
     创建
      此时,我 创建 一对 公私钥,私钥自行保留(用于证明我的身份),公钥给 A(用于验签--验证签名)
     拥有
      此时  我拥有 自己的私钥A 拥有我的公钥
     使用:
      我的返回结果 时,使用私钥签名
      A 收到请求结果后,用 我给A 的公钥 验签,验签通过即证明的确是我返回的结果,验证不通过当然是拒绝访问
 
加密/解密
签名保证了信息的来源可靠性,加密可以保证数据的安全性个人理解,在网络上传播消息,是可以通过各种手段拦截的,所以需要对数据进行加密
如果 A 要 和 B 进行通讯:
   在发送消息时:使用  对方的公钥 进行加密;因为使用对方的公钥加密,就只要对方的私钥可以解密,也就是说不会有第三方可以解密内容。
     在接收信息时:使用 自己的私钥 进行解密;
 
为什么不使用私钥加密?
  因为使用私钥加密之后,拥有公钥的人都可以进行解密,那岂不是泄露了 A 和 B 之间的消息了?
 
 
感觉明白上面的问题,基本上都理解了。
 
本文参考不少资料,包括但不限于:
https://www.zhihu.com/question/25912483/answer/31656330
https://songlee24.github.io/2015/05/03/public-key-and-private-key/

转载于:https://www.cnblogs.com/iceJava/p/7603706.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值