zoukankan      html  css  js  c++  java
  • MD5简介

    MD5简介

    所谓MD5"Message-Digest Algorithm 5(信息-摘要算法)"它由MD2MD3MD4发展而来的一种单向函数算法(也就是HASH算法)它是国际著名的公钥加密算法标准RSA的第一设计者R.Rivest于上个世纪90年代初开发出来的。MD5的最大作用在于将不同格式的大容量文件信息在用数字签名软件来签署私人密钥前"压缩"成一种保密的格式关键之处在于——这种"压缩"是不可逆的。

    为了让读者朋友对MD5的应用有个直观的认识笔者以一个比方和一个实例来简要描述一下其工作过程:

    大家都知道地球上任何人都有自己独一无二的指纹这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的"数字指纹"如果任何人对文件做了任何改动MD5值也就是对应的"数字指纹"都会发生变化。

    我们常常在某些软件下载站点的某软件信息中看到其MD5它的作用就在于我们可以在下载该软件后对下载回来的文件用专门的软件(如Windows MD5 Check等)做一次MD5校验以确保我们获得的文件与该站点提供的文件为同一文件。利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。

    笔者上面提到的例子只是MD5的一个基本应用实际上MD5还被用于加密解密技术上Unix、各类BSD系统登录密码(在MD5诞生前采用的是DES加密算法后因MD5安全性更高DES被淘汰)、通信信息加密(如大家熟悉的即时通信软件MyIM)、数字签名等诸多方面。

    MD5将任意长度的“字节串”变换成一个128bit的大整数并且它是一个不可逆的字符串变换算法换句话说就是即使你看到源程序和算法描述也无法将一个MD5的值变换回原始的字符串从数学原理上说是因为原始的字符串有无穷多个这有点象不存在反函数的数学函数。

    MD5的典型应用是对一段Message(字节串)产生fingerprint(指纹)以防止被“篡改”。举个例子你将一段话写在一个叫 readme.txt文件中并对这个readme.txt产生一个MD5的值并记录在案然后你可以传播这个文件给别人别人如果修改了文件中的任何内容你对这个文件重新计算MD5时就会发现(两个MD5值不相同)。如果再有一个第三方的认证机构MD5还可以防止文件作者的“抵赖”这就是所谓的数字签名应用。

    MD5还广泛用于加密和解密技术上在很多操作系统中用户的密码是以MD5值(或类似的其它算法)的方式保存的 用户Login的时候系统是把用户输入的密码计算成MD5然后再去和系统中保存的MD5值进行比较而系统并不“知道”用户的密码是什么。

    所以要遇到了md5密码的问题比较好的办法是:你可以用这个系统中的md5()函数重新设一个密码admin把生成的一串密码覆盖原来的就行了。

    原文:

    http://wenku.baidu.com/view/0be9ca0f844769eae009ed3b.html

  • 相关阅读:
    今天查看了java文档中的sort方法
    记录下git简单使用(以码云为例)
    今天是leetcode300
    今天了解了一下摩尔投票法
    # 今天学习了一下java8的lambda表达式
    make命令的-j -f参数说明
    shell中单引号和双引号区别
    判断字符串相似度
    shell计算时间差
    hive cli转hive beeline的几个例子
  • 原文地址:https://www.cnblogs.com/mydomain/p/2733084.html
Copyright © 2011-2022 走看看