欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

加密、解密、摘要、签名、证书一文搞懂

发布时间:2024/9/30 编程问答 48 豆豆
生活随笔 收集整理的这篇文章主要介绍了 加密、解密、摘要、签名、证书一文搞懂 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

概念

是否可逆意思算法举例说明能力
可逆加密过后的数据可以解密出来AES,DES,3DES等对称加密
RSA,RSA2等非对称,公钥加密私钥解密或者反过来,用于验签加密的数据越多越慢,RSA2目前只能加密少于密钥长度的数据,目前的计算机还不能破解2048长度的密文
不可逆加密过了就没法解开了,唯一的数据加密后的结果唯一MD5,SHA1,SHA256,SHA512等一般不称之为加密算法,而叫摘要算法快,据说google暴力破解过SHA1算法了

从普通加密解密到证书的过程

以服务端S到客户端C的单向通信举例

  • 对称加密存在的问题是C和S怎么传盐,无论放在互联网的任何地方,盐被偷了,又知道你们的加密算法,肯定能破解。
  • 不可逆加密,数据就失去可读性,C和S得到不认识的数据,倒是可以用于验签,但是这么干不是吃饱了撑的?
  • 从真实数据到证书的过程:
  • RSA2(包括RSA)会生成公钥和私钥,公钥加密的数据私钥可以解开,反之亦可,私钥S持有(不会泄露),公钥多个C持有,如果S不小心把公钥下发给不想下发的C(统称黑客)或者包被劫持,那黑客就可以用公钥解开数据进行篡改再发给S进行攻击。所以要解决的问题两个,问题一是数据防篡改,问题二是公钥要发给自己信任的C(从C来说就是要保证公钥是你的S下发的),也就是不能再网络上直接传输。
  • 解决问题一,用不可逆算法把数据(明文+盐,我理解的这里加盐是进一步确保明文更复杂,不容易猜到)加密,即MD5(SHA1、SHA256、SHA512等)对数据加密,生成的东西叫摘要(所以这些算法也叫摘要算法)。因为不同的数据用不可逆算法加密之后的结果唯一,如果数据被篡改,则生成的摘要不同,验证的时候就知道被改过了。
  • 摘要再用S的的私钥加密,生成的东西就叫签名C和S传数据的时候,如果只传摘要,这是解不开的,没有意义,所以S给C传的数据包应该包含摘要和真实数据明文,让C可以用公钥解开签名得到明文和摘要,然后用明文+盐生成摘要对比一下S传过来的摘要,这叫验签,通过得话说明就是你的S传过来的数据没被篡改,然后就可以用明文进行自己的逻辑。到这里一个完整的签名和验签过程就成了。
  • 解决问题二,为什么要证书,证书即CA,是一个第三方机构。一般的场景是,大公司的S只有一个,C却是无数多个,S自己都不知道又哪些C。那么C怎么拿到S的公钥呢,这时候CA就上场了,S会向CA机构上交自己的公钥(还有公司组织的其他信息),CA用自己的私钥加密,生成的东西就叫证书,那C要又CA的公钥才能解开证书并得到自己S的公钥啊?CA是怎么办的呢?CA是一家或者多家很有钱的公司,S向他申请证书的时候都有保险的,要是CA把S的公钥泄露了要赔很多钱,所以这么大的公司CA就买通比如浏览器厂商这样的超大的C,把证书内嵌到浏览器里或者计算机系统里。就不存在网络传输被拦截的风险了。https协议就是这么回事了。
    • 一般加密通信的流程(比如银行)

    以上说的是S到C的单向通信,S端需要解密和验签,C端同样,所以流程是这样的。

    • C生成自己的公钥和私钥(比如用openSSL工具生成,支付宝平台可以在线生成),S生成自己的公钥和私钥,S另外再生成盐(用于摘要的盐,不是对称加密的盐),然后C在S的后台管理系统注册登录,上交自己的公钥,C同时获得S的盐和公钥。因为C是在S的系统里获取的,相当于在S的系统里把自己的公钥手写进去和把S的公钥和盐手抄下来,没有网络传输,所以还是安全的。
    • 然后C和S通信或者S向C通信的时候就用相同的摘要算法(这个算法C和S线下商定)对明文+盐进行摘要,然后用自己的私钥对明文和摘要(一般是直接拼接字符串)加密,即生成签名,然后就可以把摘要+签名(统称包)在网络上传输。对方取得包之后用自己的私钥解开,得到明文和摘要,再用明文+盐生成摘要对比一下对方传过来的摘要,即验签,对的上得话说明数据没被篡改,安全,就可以用明文进行自己的工作了。

    总结

    以上是生活随笔为你收集整理的加密、解密、摘要、签名、证书一文搞懂的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。