原文件地址:http://www.tuicool.com/articles/7buueeQ
密钥分为两种:对称密钥和非对象密钥
对称密钥算法:DES 3DES AES,加密算法快
非对称密钥算法:RAS,加密算法慢
摘要:采用某种摘要算法,将明文转化为固定长度的字符,摘要也被称为指纹.相同的文件内容和文件名具有
相同的指纹
摘要算法:md5(二进制:128位,16进制:32位),SHA1(二进制:256位,64位)
对称密钥理解图:
基于Bob向Alice发送文件的场景,
摘要算法(md5,SHA1) +Bob的原始文件 计算出=> 这个文件的摘要值
非对称密钥算法(RSA)+ Bob私钥 + 上一步的摘要值 =>摘要密文
摘要密文 + 原始文件 发送给 => Alice
摘要密文和原始文件被称作Bob对原始文件的签名结果
数字签名:就是对原始文件的摘要(指纹),用其私钥进行加密
Alice收到Bob发来的信息后:
Alice使用Bob的公钥将收到的摘要密文解密得到摘要值(能用Bob的私钥解密,说明对方一定是Bob,这个摘要值很明显是由Bob计算得到的)
Alice利用摘要算法(md5,SHA1) + 原始文件 =>摘要值(这个由Alice计算得到的)与上一步得到的摘要值对比,一样说明Alice从Bob接受到的数据是完整的,没有人篡改过.
以上两个步骤被称为验签
PKCS10(P10)数据包:公钥 + 密钥的算法 + 该公钥的所有者(主题) + 该公钥的有效期等属性
签名过程:
Bob将自己的P10数据包发送给CA,经过CA签名得 原始文件(P10数据包) + 摘要密文(由CA私钥加密形成),这个签名后的结果被称为数字证书.
数字证书同样遵循一个格式标准,我们称作X509标准,我们一般提到的X509证书就是如此。
基于这个数字证书,再来看Bob如何给Alice发送一份不可否认,不可篡改的文件
Bob将自己的签名后的结果(原始文件(Hello World!) + 摘要密文(Bob私钥加密hello,world后) ) + Bob的数字证书(P10数据包 + 摘要密文(P10数据包经CA私钥加密)) 发送给Alice
Alice接受Bob发送的数据过程
Alice利用CA公钥对Bob发来的数字证书进行验证,如果验证成功,则提取证书中的
公钥,对Bob发来的文件进行验签,如果验证成功,则证明文件不可否认不可篡改.
总结:基于数字证书后,Alice不需要自己维护一个公钥库维护Bob(等人的)公钥证书,只要持有CA
的公钥即可.