原文件地址:http://www.tuicool.com/articles/7buueeQ

密钥分为两种:对称密钥和非对象密钥

对称密钥算法:DES 3DES AES,加密算法快

非对称密钥算法:RAS,加密算法慢


摘要:采用某种摘要算法,将明文转化为固定长度的字符,摘要也被称为指纹.相同的文件内容和文件名具有
相同的指纹

摘要算法:md5(二进制:128位,16进制:32位),SHA1(二进制:256位,64位)

wKiom1iznODynshEAAAcmg19rOg237.png



对称密钥理解图:

wKiom1izl1_ilVi_AABUv3_B1Lg868.jpg

wKioL1izl7OAaqdlAABQRNrD6oU484.jpg



基于Bob向Alice发送文件的场景,

wKiom1iztp2AasWVAAA0GE8jd3g288.jpg

  1. 摘要算法(md5,SHA1) +Bob的原始文件 计算出=> 这个文件的摘要值

  2. 非对称密钥算法(RSA)+ Bob私钥 + 上一步的摘要值 =>摘要密文

  3. 摘要密文 + 原始文件 发送给 => Alice

摘要密文和原始文件被称作Bob对原始文件的签名结果

数字签名:就是对原始文件的摘要(指纹),用其私钥进行加密



Alice收到Bob发来的信息后:

wKioL1izuwCx0PJVAABVnGK23Yk766.jpg



  1. Alice使用Bob的公钥将收到的摘要密文解密得到摘要值(能用Bob的私钥解密,说明对方一定是Bob,这个摘要值很明显是由Bob计算得到的)

  2. Alice利用摘要算法(md5,SHA1) + 原始文件 =>摘要值(这个由Alice计算得到的)与上一步得到的摘要值对比,一样说明Alice从Bob接受到的数据是完整的,没有人篡改过.

    以上两个步骤被称为验签


PKCS10(P10)数据包:公钥 + 密钥的算法 + 该公钥的所有者(主题) + 该公钥的有效期等属性




签名过程:

wKioL1izvU6jHgp_AAA_3Q9eBEk441.jpg

  1. Bob将自己的P10数据包发送给CA,经过CA签名得 原始文件(P10数据包) + 摘要密文(由CA私钥加密形成),这个签名后的结果被称为数字证书.


数字证书同样遵循一个格式标准,我们称作X509标准,我们一般提到的X509证书就是如此。



基于这个数字证书,再来看Bob如何给Alice发送一份不可否认,不可篡改的文件


wKiom1izvwij1pGhAAA79lxGC_g800.jpg

  1. Bob将自己的签名后的结果(原始文件(Hello World!) + 摘要密文(Bob私钥加密hello,world后) ) + Bob的数字证书(P10数据包 + 摘要密文(P10数据包经CA私钥加密)) 发送给Alice






Alice接受Bob发送的数据过程

wKioL1izxPCwh4eaAABepah1SDU198.jpg

  1. Alice利用CA公钥对Bob发来的数字证书进行验证,如果验证成功,则提取证书中的
    公钥,对Bob发来的文件进行验签,如果验证成功,则证明文件不可否认不可篡改.


        总结:基于数字证书后,Alice不需要自己维护一个公钥库维护Bob(等人的)公钥证书,只要持有CA

     的公钥即可.