经常性有人询问 什么是MD5 , 什么是SHA-1 ,如何校验这些 Hash。还有拿单个ISO文件的MD5,SHA-1讯问是不是原版的问题,会员间讨论版本问题可以,但都发同样的帖子询问同样的问题,在此之前不做学习和了解,并对斑竹和论坛发表质问言论就非常不受欢迎。在这里,对以上问题做一个终结解释,此贴固顶,以后不看固定贴,不学习基础知识和维护论坛基本准则者 —— 一律封贴、删贴直至对ID进行处理并不与回复解释!

让我们先来了解一些基本知识,了解hash。

Hash,一般翻译做“散列”,也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。

简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

HASH主要用于信息安全领域中加密算法,他把一些不同长度的信息转化成杂乱的128位的编码里,叫做HASH值. 也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系

了解了hash基本定义,就不能不提到一些著名的hash算法,MD5 和 SHA1 可以说是目前应用最广泛的Hash算法,而它们都是以 MD4 为基础设计的。那么他们都是什么意思呢? 
这里简单说一下:

1) MD4 
MD4(RFC 1320)是 MIT 的 Ronald L. Rivest 在 1990 年设计的,MD 是 Message Digest 的缩写。它适用在32位字长的处理器上用高速软件实现--它是基于 32 位操作数的位操作来实现的。

2) MD5 
MD5(RFC 1321)是 Rivest 于1991年对MD4的改进版本。它对输入仍以512位分组,其输出是4个32位字的级联,与 MD4 相同。MD5比MD4来得复杂,并且速度较之要慢一点,但更安全,在抗分析和抗差分方面表现更好。 
MD5是一种不可逆的加密算法,目前是最牢靠的加密算法之一,尚没有能够逆运算的程序被开发出来,它对应任何字符串都可以加密成一段唯一的固定长度的代码。 
那么它有什么用呢?很简单,通过它可以判断原始值是否正确(是否被更改过)。一般用于密码的加密。而我们所提供的MD5校验码就是针对安装程序的唯一对应的一段代码。你可以使用任何MD5运算器对下载的文件进行运算,运算出来的结果如果完全符合我们提供的MD5校验码,那么说明你下载的这个程序没有被中途修改过。 
  这个特征码有如下特性,首先它不可逆,例如我有一段秘密的文字如:"My Secret Words",经算法变换后得到MD5码(b9944e9367d2e40dd1f0c4040d4daaf7),把这个码告诉其他人,他们根据这个 MD5码是没有系统的方法可以知道你原来的文字是什么的。 
  其次,这个码具有高度的离散性,也就是说,原信息的一点点变化就会导致MD5的巨大变化,例如"ABC" MD5(902fbdd2b1df0c4f70b4a5d23525e932)和"ABC "(多了一空格)MD5(12c774468f981a9487c30773d8093561)差别非常大,而且之间没有任何关系,也就是说产生的MD5 码是不可预测的。 
  最后由于这个码有128位那么长,所以任意信息之间具有相同MD5码的可能性非常之低,通常被认为是不可能的。 
  所以一般认为MD5码可以唯一地代表原信息的特征,通常用于密码的加密存储,数字签名,文件完整性验证等。

3) SHA1 及其他 
SHA1是由NIST NSA设计为同DSA一起使用的,它对长度小于264的输入,产生长度为160bit的散列值,因此抗穷举(brute-force)性更好。SHA-1 设计时基于和MD4相同原理,并且模仿了该算法。SHA-1是由美国标准技术局(NIST)颁布的国家标准,是一种应用最为广泛的hash函数算法,也是目前最先进的加密技术,被政府部门和私营业主用来处理敏感的信息。而SHA-1基于MD5,MD5又基于MD4。 
论坛里提供的系统镜像文件的hash也就是微软官方提供的SHA-1值,下载后和此值对应,就说明你下载过程中文件没有被更改,属于原版。

什么是CRC 
CRC的全称为Cyclic Redundancy Check,中文名称为循环冗余校验。它是一类重要的线性分组码,编码和解码方法简单,检错和纠错能力强,在通信领域广泛地用于实现差错控制。实际上,除数据通信外,CRC在其它很多领域也是大有用武之地的。例如我们读软盘上的文件,以及解压一个ZIP文件时,偶尔会碰到“Bad CRC”错误,由此它在数据存储方面的应用可略见一斑。

那么这些Hash算法到底有什么用呢? 
Hash算法在信息安全方面的应用主要体现在以下的3个方面:

1) 文件校验 
我们比较熟悉的校验算法有奇偶校验和CRC校验,这2种校验并没有抗数据篡改的能力,它们一定程度上能检测并纠正数据传输中的信道误码,但却不能防止对数据的恶意破坏。 
MD5 Hash算法的"数字指纹"特性,使它成为目前应用最广泛的一种文件完整性校验和(Checksum)算法,不少Unix系统有提供计算md5 checksum的命令。 
2) 数字签名 
Hash 算法也是现代密码体系中的一个重要组成部分。由于非对称算法的运算速度较慢,所以在数字签名协议中,单向散列函数扮演了一个重要的角色。 对 Hash 值,又称"数字摘要"进行数字签名,在统计上可以认为与对文件本身进行数字签名是等效的。而且这样的协议还有其他的优点。 
3) 鉴权协议 
如下的鉴权协议又被称作"挑战--认证模式:在传输信道是可被侦听,但不可被篡改的情况下,这是一种简单而安全的方法。

当然,hash函数并不是完全可靠,不同文件产生相同MD5和SHA1的几率还是有的,只是不高,在我们论坛里提供的系统光盘,你想对这么几个文件存在相同HASH的不同文件根本是不可能的。 
论坛MSDN版块,提供的就是微软发布MSDN提供给程序员研究的Windows系统的镜像的HASH值——SHA-1,不提供MD5因为微软只提供了 SHA1。而论坛发布区发布的镜像是和这些值对应的镜像,你校验自己的镜像的HASH和MSDN信息区相应版本的SHA-1对应的上,说明你手中的光盘是微软通过MSDN发布的原盘。对不上还存在属于零售或通过销售渠道发布的镜像的可能。毕竟MSDN只是微软发布系统光盘的一个途径,MSDN只是给程序开发人员研究用的。 
寻求原版的证实,对应SHA-1和MD5外,CRC的认证也是一个很重要的因素,CRC同样是校验文件的完整性,还有CDIMGE的封装版本。 
微软出品的镜像都能通过CRC验证,当然也有人使用CRC自己进行制作可以得到通过CRC的镜像,那么这时候你需要对应镜像的SHA-1等了,所以,验证一个镜像的原盘可以通过对应多个数值来完成。

什么是MSDN 
MSDN是Microsoft Software Developer Network的简称。这是微软的针对开发者的开发计划。你可以在 http://msdn.microsoft.com 看到有关软件开发的资料。在VC++ 6.0中包括MSDN Library的光盘,其中包括VC++的帮助文件和许多与开发相关的技术文献,学习VC++编程经常要搜索一下MSDN Library。MSDN Library每个季度更新一次,可以向微软订阅更新光盘。 
所以MSDN资源不是匿名就可以访问并看的到的,需要订购的客户才能看到并下载。 
MSDN订购可以标准、教育或批量价格,从你喜欢的软件分销商那里购买。

对于争论和询问最多的XP SP2 VOL的问题,最后再发一次解释。 
那么很多朋友问能不能提供XP SP2 VOL版,这个版本呢MSDN确实有。但MSDN网站上的ISO安装时却提示文件出错,这是微软官方的问题.MSDN寄送的光盘2468.1里面的XP SP2 VOL中文版应该是正确的,网上出现所谓电脑疯子提供的XP SP2 VOL其实就是windows XP PRO TABLE PC 2005 中文盘1,大家比较SHA1就知道了。这个盘和XP SP2 VOL其实完全是一样的。TPC安装盘1就是SP2 VOL,盘2才是TPC的插件等

目前网上流行的都自称是MSDN版的也就四个版本的Windows XP with SP2简体中文版,MD5分别是: 
2637e695f43329fc9d66feceee44bf1f 
81d7887a2f2cba696defdfc75dac54b4 (以上这两个CRC都一样!CRC:0x328A5807也就是说是同一份文件,至于来源没有人说的清楚。) 
3c8a5f467ebacc02d03dbdeabdbfa6f3 (安装时报错的版本,也就是感受孤独在曾经贴出的SHA11为 e0fdf1d94571b1f9c1069e53b88f9eb250caa1ca 从微软MSDN官方得到的盘符标明为SP2 VOL的原盘) 
f455f9a787b620aca7ac89ab47574919 (其实就是Windows XP Tablet PC Edition 2005 CD 1 - VL简体中文)

其实MD5以26和81开头的XPSP2镜像中的文件是完全一致的,只是一个采用CDIMAGE 2.47封装,而另一个采用CDIMAGE 2.5封装,而这张盘的来源不清楚,没有一个确实的证据能证明,且有朋友已经实验过解压后用CDIMAGE再压缩回去,MD5和CRC可以做的一样,文件和流传已久的上海大政府版一样。而孤独提供的TPC的盘1确有微软官方网站提供的SHA1截图,确对可以确认正版。

而MD5为3c8a5f467ebacc02d03dbdeabdbfa6f3这张微软MSDN官方网提供的SP2 VOL原盘解压后提示错误,有一个文件损坏,至今微软还没有修复,但这个盘在微软给MSDN用户寄送的2468.1DVD中的文件应该是正确的,不过到现在还没有人提供! 
Expand显示(根本没有解出来!) 
C:/>expand -r c:/OEMBIOS.BI_ c:/ 
Microsoft (R) 文件展开实用程序 版本 5.1.2600.0 
版权所有 (C) Microsoft Corp 1990-1999。保留所有权利。

将 c:/oembios.bi_ 展开成 c:/oembios.bin。 
经过压缩的输入文件格式错误: c:/oembios.bi_。

WinRAR则显示(但可以解出来): 
C:/OEMBIOS.BI_: The archive is corrupt

至今网上出现了四种不同的据说都是原版的vrmpvol_cn,即 
1.md5值是26开头的2.47封装的版本 
2.md5值是81开头的2.52封装的版本 
3.近几天出现的从微软msdn网站上下的2.52封装的SP2 VOL原盘,但安装出现问题的版本,而且crc也显示corrupt 
4.接着出现的据称是电脑疯子用msdn寄送来的光盘做的镜像,crc通过 
对于网上的许多网友的言论我觉得既可笑,自己又不去考证,以下谈谈我的看法: 
最先出现的2.47的版本我一直都持怀疑态度,因为根据我所拥有的英文版、韩文版、繁体台湾版、繁体香港版、日文版、俄文版的零售及vol版来看都是 2.52封装的,为什么独vrmpvol_cn是2.47的呢(零售的vrmpfpp_cn却是2.52的),从这一点来看,不能令人相信其出身的可靠性,况且没有最直接的证据表明2.47版本的来源。 
而后来出现的2.52封装的版本MD5为86开头,其实和2.47同出一源,两者文件完全一致,丝毫不差,无非就是封装的不同,两者的crc值一样,这并不难理解,因为两者的文件既然是一样的,那么做出crc值相同的镜像技术上是可行的,比较下和网上流传的上海大政府版一致。 
近几天出现的从微软msdn网站上下的2.52封装的但安装有问题的版本,有两幅不同的图片最直接地证明了其出身的可靠性,其一是ljf的会员提供的,另一是感受孤独提供的,我们从他们那里分享的镜像符合图片上标示的sha-1 hash值,因此我毫不怀疑两者都是从msdn下载的正品。至于无法安装,那是微软的疏忽,就此而指责感受孤独完全没有道理。我们还发现这个从msdn下来的crc值和以前的2.47、2.52版本不同,这很重要。 
后来ljf马上更正了,电脑疯子用msdn寄送的光盘重新做了镜像,该版本的crc值和从msdn下载的一样,只不过它通过了crc检测,显示valid,这个版本现在验证其实就是孤独提供的TPC的盘1。 
对比以上四个版本的不同,我们发现新近的两个版本有5个关键文件和此前的两个版本不同;而从msdn下载的和根据寄送光盘做成的镜像,我也作了对比,发现只有一个文件不同:oembios.bin,这恰恰就是有网友反映的安装出错的那个文件! 
另外,以前vrmpvol_cn,vrmpvol_en都曾出现过2.47和2.52封装的不同版本,根据我的看法2.47版本的不可靠!我对比了一下感受孤独所给出的vrmpvol_en(从msdn上下载的)的hash值和以前所谓的供大客户下载的(2.52版本)是完全一样的!这一点足以有力地批驳什么“从msdn下的是2.47,供大客户下的是2.52,两者或许有所不同”的谬论!!! 
我还想补充一点:不同的镜像制作软件制作iso可能会导致md5的不同,但crc不会变,我推荐用winimage做,因为它不会产生空白冗余数据,做出的镜像大小和虚拟后的是一样的。 
感受孤独朋友,补充了一张windows tablet pc 2005 vol版的图片,从图片中看,hash值与电脑疯子提供的一模一样!!c0addd927*****!我们知道,tablet pc有两张盘,它的第一张盘其实完全就是windows xp sp2 vol的安装盘,只不过第二张盘是安装tablet pc所必需的一些组件。微软肯定太不小心了,竟然放了一个有问题的windows xp with sp2 vol 中文版iso文件,不过在windows tablet pc 2005 vol这里又放了一个没问题的iso。好的和坏的都是msdn原版,两者只相差一个文件,但就是这个文件的坏,导致在windows xp with sp2 vol处放的iso无法安装。现在一切都很明白了,电脑疯子的确实真正完美无问题的原版VRMPVOL_CN!!只有这一个是真的!

什么是MD5 什么是SHA-1 如何校验这些Hash相关推荐

  1. 简单的md5加密数据及密码复杂度校验

    数据库通常需要对密码进行加密处理,如果已经使用了明文,则需要进行加密迁移. 1. 明文数据库 CREATE DATABASE `test` ; USE `test`; insert into `t_a ...

  2. MD5加密算法与SHA加密算法

    2.MD5加密 2.1 概述 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为R ...

  3. JS的3种加密方式:base64编码、md5加密及sha加密

    用法总结:创建加密js文件,引入加密js 注:md5.sha1加密方式有多种方法可用 1.加密js文件 1.1base64.js function Base64() {// private prope ...

  4. 火山中文编程 -- MD5算法和SHA算法

    0x01 导入OPENSSL模块 1.右击模块,选择配置项目所用的模块 2.选择OpenSSL,点击确定 0x02 代码实现 1.MD5加密 变量 = 加解密类.取数据MD5 (文本到多字节 (&qu ...

  5. 文件md5码怎么生成_Linux 系统文件校验方法--MD5,SHA1,PGP,SHA256,SHA512

    MD5校验 原理:对文件进行MD5 Hash,求出文件的MD5哈希值,通过下载后文件MD5哈希值和发布者提供的MD5哈希值是否一致来判断文件是否在发布者发布之后被篡改过. [root@centos-1 ...

  6. 密码MD5加盐加密----注册、校验、修改模块

    思路:     单纯的MD5加密容易被碰撞破解,考虑将密码加上一个随机字符串(盐),再一同进行MD5加密,提高安全性. 此时,盐相当于另一半秘钥,需将盐一同存入数据库,用以验证. 实现过程:      ...

  7. linux通过md5验证文件完整性,Linux下校验下载文件的完整性(MD5,SHA1,PGP)

    Linux下的学习开始总是艰难的,但有的时候,却发现Linux下远比Windows的操作来的实在的多--这下载文件的完整性就是其中一件,让本人觉着很爽的一件事情.在编译安装各种软件的时候,总要到各个网 ...

  8. 如何生成安全的密码 Hash:MD5, SHA, PBKDF2, BCrypt

    . 一.前言 密码 Hash 值的产生是将用户所提供的密码通过使用一定的算法计算后得到的加密字符序列.在 Java 中提供很多被证明能有效保证密码安全的 Hash 算法实现,我将在这篇文章中讨论其中的 ...

  9. 如何生成安全的密码 Hash:MD5, SHA, PBKDF2, BCrypt 示例

    文章推荐 精选java等全套学习资源 精选java电子图书资源 精选大数据学习资源 java项目练习精选 . 一.前言 密码 Hash 值的产生是将用户所提供的密码通过使用一定的算法计算后得到的加密字 ...

最新文章

  1. 惠斯通电桥信号调理芯片_用惠斯通电桥测电阻
  2. 点是否在面内算法(Point-In-Polygon Algorithm)
  3. Eclipse中新建SpringBoot项目并输出HelloWorld
  4. pandas对每十行做批量操作_pandas批量处理数据
  5. jquery 设置asp:dropdownlist 选中项
  6. 归并排序算法(C#实现)
  7. mysql 从库状态_大神教你自动发现监控mysql从库状态
  8. mysql5.5分别把这两个数据库同步到不同的从服务器
  9. ping html 微信支付,说说PING++介入微信H5支付,我趟过的坑。
  10. 大数据可视化系统开发的作用
  11. 优化mac触摸板(Trackpad)使用体验的推荐设置
  12. 移动端日历---纯**自己写的
  13. 29个最酷的Firefox About:Config配置参数
  14. vb与c语言数组传递,在VB中调用C/C++语言编写的dll,数组参数的传递
  15. 杭银消费金融拟增资扩股:杭州银行认购3.7亿股,曾被罚50万元
  16. kubeadm init 问题和解决问题记录
  17. 永辉超市第三季营收222亿:净亏7.8亿 卖金龙鱼股权套现1.7亿
  18. html 实现格子效果图,纯CSS实现动态图片的九宫格布局
  19. xgplayer.js 西瓜播放器 - 字节跳动团队出品的免费开源 HTML5 视频播放组件,内置解析器、也能节省流量
  20. Github网站css加载不出来的处理方法

热门文章

  1. HDU4080【Stammering Aliens】(字符串哈希、二分法)
  2. 谈NANDnbsp;Flash的底层结构和解析
  3. java的(String)字符串方法
  4. 2.6 KNN(K近邻算法)
  5. 甲骨文称:IT安全投得多不如投得巧
  6. 阿里巴巴首席DBA成甲骨文全球第100个ACE
  7. json数据如何得到所有的value
  8. java多线程的优势
  9. Node.js 学习笔记day007
  10. iphone4s短信云服务器,苹果的iCloud云端短信,有必要打开吗?