zoukankan      html  css  js  c++  java
  • 数字签名详解

    数字证书和我们平时见到的纸质证书一样,由一些通用的元素构成:

    1. 证书的名称

    2. 颁发证书的机构

    3. 证书发给谁

    4. 证书生效时间(有些证书还有失效时间)

    5. 签名

    判断一个证书是否可信

    1. 首先看发证机构是否值得信赖(比如微软颁发的数字证书和一个不知名的机构颁发的证书,你更信赖谁?)

    2. 看是否处在有效期

    3. 看数字签名,数字签名必须是真的,否则一切都是假的。数字签名是验明证书真伪的唯一凭证。

    签名过程,以微软为例

    1. 微软持有私钥,另外有配套的公钥。私钥可以理解为钥匙,公钥为锁。私钥是保密的,微软自己保存,公钥对全网络公开。

    2. 微软对证书上的内容进行hash运算,得出摘要(digest),摘要是固定长度的一串字符

    3. 摘要用私钥进行加密,就得到了签名

    4. 将签名附在证书内容下面

    解密过程

    1. 拿到证书对签名使用公钥解密,得到证书摘要

    2. 对比解密出来的摘要和签名时的摘要是一样的,证明证书是微软签发的,且内容没被篡改,因为任何对内容的篡改(哪怕只改一个bit位)解密出来的摘要都会和加密时大不相同

    不幸的是,万一有人替换了你手中的公钥,再使用配对的私钥签名给你发消息,就可以欺骗你了。为了防范这种情况,就有了"证书中心"(certificate authority,简称CA),CA使用自己的私钥再次对证书进行签名来保证我们可以拿到真正的公钥。

    read more: 数字签名是什么 http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

  • 相关阅读:
    Java各种数据结构实现
    Lintcode答案&笔记
    JavaScript之onclick事件
    CSS3过渡结束监听事件,清除/修改表单元素的一些默认样式
    移动端自动调整根元素字体大小
    手机移动端事件封装
    js 拖拽 鼠标事件,放大镜效果
    CSS 常用属性之 阴影
    CSS常用属性之选择器
    全屏banner及全屏轮播
  • 原文地址:https://www.cnblogs.com/huahuayu/p/8421546.html
Copyright © 2011-2022 走看看