zoukankan      html  css  js  c++  java
  • 数字证书和数字签名

    数字签名

    服务器首先使用RSA算法生成私钥-公钥对,并只公开公钥。

    客户端拿到公钥就可以安全地与服务器通信了。

    举个例子,服务器发送的内容是abc,则有:

    content=abc

    hash值=hash(content)

    数字签名=私钥加密hash值

    客户端验证签名过程:

    1. 公钥解密数字签名得到hash值
    2. 实际hash值=hash(content)

    结果:

    公钥解密出错,有两种情况:一是解密用的公钥是错的;二是数字签名是错的;

    比较签名中的hash值与实际hash值,如果相等说明内容没有被修改过,验签成功;如果不相等说明内容被修改过。

    数字证书

    在客户端验证签名过程中使用的公钥不能保证一定是真的,比如文件损坏,或者其他人替换掉了,都会造成公钥不正确,加以利用后甚至被欺骗。所以服务器的公钥需要一个权威机构认证,就是certificate authority(简称CA),客户端只认CA发布的证书,这样就能保证公钥的正确性。

    数字证书=CA私钥加密(服务器的公钥+相关信息)

    客户端用CA的公钥(一般都会安装)解密数字证书,得到服务器公钥+相关信息,客户端以本地的证书为基础,判断这个公钥是否通过认证。

    例如,客户端如果是浏览器,在浏览器的"证书管理器"有"受信任的根证书颁发机构"列表,浏览器会根据这张列表,查看公钥是否在列表之内,或者判断是否在“证书信任链”中。

  • 相关阅读:
    圣诞放长假了
    设计模式Top10排行榜
    成长的烦恼
    小三的故事发家篇
    《家庭财务总管》升级(1.0.0.2)
    紧急项目处理方法
    隐身大法,使民无知
    如何维护自己文章的版权
    在深度学习的视觉VISION领域数据预处理的魔法常数magic constant、黄金数值: mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225]
    ImageNet数据集下载
  • 原文地址:https://www.cnblogs.com/huangyp/p/4025732.html
Copyright © 2011-2022 走看看