zoukankan      html  css  js  c++  java
  • MD5算法产生多少位的消息摘要?

    1.  加密算法和MD5等散列算法的区别

         在软件开发的用户注册功能中常出现MD5加密这个概念,这个概念有一定的误导性。严格来说:MD5还有sha-1、 RIPEMD以及Haval等不能算是加密算法(虽然常用于把密码变成“密文”),他们只是散列算法,或者叫摘要算法。加密对应解密这个概念,加密算法包括:DES、3DES、IDEA、 RSA、AES等。

         要弄懂这两类算法的区别,最本质的方式就是把这两类算法的步骤搞懂,但这需要大量的时间。通过两类算法的表现可以对他们的区别有个大体的了解:
         1.MD5算法除了注册时对用户密码进行MD5运算以外,还常用于验证下载的软件的完整性(linux下面md5sum命令可以支持这一典型应用),常用电驴等下载视频和软件的用户应该知道这一点。MD5运算后的长度是固定的,它显然不可能包含视频、软件等源数据的全部信息。对于加密算法来说,加密后的密文是包含原始数据所有信息的,只是不能被直接读懂变的安全了。
         2.加密算法是一种通信体系,经常用于分布式系统。它的目标是数据经过传输后只能被特定的有密钥的人读懂,包含加密算法和密钥2个要素。而MD5等散列算法却不包含运算后的数据只能被特定人读懂的目标,它只让机器读懂。当用于加密时,它加密后的数据对所有人一视同仁,且没有密钥机制,没有好的方法从加密后的数据得到原始数据,从而保证数据的安全。它并不是通信机制,它是不可逆的。另外它的验证数据完整性的功能上面已经提到,我想,很多有心人最初正是从这一点意识到这两类算法的区别把?

         典型应用:这里再加一个加密算法的典型应用就可以了,例如所有涉及到IC卡的系统,银行卡、公交卡、市民卡等等。在数字签名技术中,同时使用到散列算法和加密算法,见阮一峰的《数字签名是什么?》。
         共同点:都属于计算机安全的范畴,都是为了保证数据安全。

    2.  数据加密和数据完整性

         实际上,数字签名是保证数据完整性的,但它不保证数据加密,不保证数据传输途中无人嗅探窃听。

        好比一辆敞篷大货车从A开到B,中途没有洒落任何东西,完整性得到了保证。但是车上有什么东西也被路人看光光。

        数据加密是从A到B建了一条虚拟隧道,货车在里面开,路人谁也不知道是什么东西。

         车子到了B后,送货的人给出自己的身份证,证明自己的确是从A来的。收货的人可以选择相信这个身份证。也可以把身份证放到自己的身份证校验仪查询,看看是不是公安部发的真的身份证。

        如果你的身份证校验仪(CA)已经是假的了,那就啥都别说了,重装系统吧。



    作者:沙漏哟
    出处:计算机的未来在于连接
    本文版权归作者和博客园共有,欢迎转载,请留下原文链接
    微信随缘扩列,聊创业聊产品,偶尔搞搞技术
  • 相关阅读:
    重写JSON的部分用fetch的API
    给网站插入一个百度地图API
    给网站写一个JSON,并远程请求。
    Object的起源及一个函数的标准形式、mechanism分析
    js中关于for 的几个函数及关于构造器或结构体与对象的关系及Arrow functions
    program的发展史及own forecast(后面的才是干货)
    indexof函数分析及其计数字符串函数、正则表达式的例子及分析
    DOM&BOM(source、methods、contents、Application)
    CSS单位分析及CSS颜色表示法、颜色表(调色板)
    一个简单的grid布局基础例子注释及相关分析
  • 原文地址:https://www.cnblogs.com/yeahwell/p/5226030.html
Copyright © 2011-2022 走看看