非对称加密 - 数字签名,数字证书

非对称加密对我们现在来说,其实是比较常见的,Https,git代码管理,最新的bitchain交易时,都使用到了非对称加密做核心的数据传输来完成.而数字签名,数字证书也是非对称加密的衍生品,

非对称加密

非对称加密的主要实现是通过一对私钥(privateKey)和公钥(publicKey)完成的,这个过程就是原始信息用私钥加密(公钥加密也可以),再用对应的公钥解密(对应的私钥),
这里写图片描述
这里要说明用私钥还是公钥加密两种情景都是有可能的,具体看提供方的使用情景,非对称加密的原理就是不管你用哪一个钥匙加密都无法只能用另一把才能解密出来,这个时候也就说你用私钥加密的数据,用自己手里的私钥是无法解密出来的.这就是所谓的非对称加密.

当然这个过程也能反着用,BB给AA发信息,用AA的公钥加密后发给BB,只有AA拥有的密匙能解开这套加密,目前比特币的支付过程底层就是这个,收款方提供一个公钥,付款方将自己的比特币用这个公钥加密,发给收款方,说白了这个过程只是将比特币付给了这个公钥对应的私钥,只有它能够解密这个内容.
(比特币支付原理:这里写链接内容)

那什么是数字签名呢?

数字签名

在实际的使用中整个流程是这样的:

  • 假如需要AA给BB发数据,这时AA使用私钥,提供了配对的公钥.
  • BB拿到AA的公钥就可以解密AA发给自己的信息了,同时为了证明这个信息是AA发送的,AA还会在原始数据中加入一条自己原始数据的hash值,这个hash值也会使用私钥加密并且一起加密发给BB,
  • BB会用自己拿到的公钥解密拿到这个hash值和原始的数据,通过相同的hash算法算出原始数据的一个hash和发过的值做对比,如果相同则说明这个原始数据是没有被修改过的.
Created with Raphaël 2.1.2 BB BB AA AA 嘿,老铁我想看些特别的资源,你那有种子吗?来点呗~ 有是有,但是最近抓的紧,咱们用老方式来传吧. 你的公钥我有,赶紧的. 用私钥对原始数据加密,并且对原始数据使用hash算法算出一个hash值 我这次在原始数据上加了我的签名,你用XX的hash算法能做比对用 使用公钥解密拿到hash值和原始数据,在对原始数据用hash算法得到hash值 老铁没问题,是你发过来的,数据完整.3q

但是整个过程中其实还有不够安全,如果BB的公钥在使用前已经被CC掉包了,这时CC可以用自己的私钥伪装成AA来给BB发送数据,一样是能够走这个流程,这个问题该怎么被解决呢?

数字证书

为了避免上面说到的问题,BB要求AA去做一个数字证书公正,也就是一个简称CA的家伙,CA就相当于一个中立的公证处,CA会将AA的公钥和一些像关联的信息用自己的私钥加密,得到的东西就是AA的数字证书,这个时候BB只需要拿着CA的公钥,就能解密出AA的公钥,在那这个解密出来的公钥,去解析AA发过来的加密数据,这样就能有效的避免,之前提到的问题.

如果你用过各大银行的网上银行,他们的加密就是使用这个方式实现的,这也是https的加密原理.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值