MD5, SHA1, CRC 解释

冰雨魔星 发表于 2009-12-08 21:47:01

随着windows7的发布,越来越多的windows7“原版”、“正版”系统出现在网上,不可否认,很多是真正的原版(但截至目前,是没有真正的正版的),但有真的就一定有假的(至于做假的目的不言自明),那么,你下载甚至安装的是否就是真的原版或正版呢,没有人会喜欢收藏假的原版或正版,更没有人愿意装完假的再重装。

      很多人可能会发现,很多系统文件的下载地址旁都带有一些MD5、SHA1、CRC32等信息(几长串十六进制数字),究竟它们代表着什么?有着怎样的意义呢?下面我就对它们进行一个通俗的解释,目的只为帮助“菜鸟”对它们有个大致的了解,如果你对此已有所了解,可以不必看了。

      先说说MD5和SHA1,之所以将它们放在一起说,是因为它们都是数据加密算法的一种,而其特别之处就在于它们都是一种不可逆的加密算法,它们都可以为任何文件随机生成一个世界上独一无二的定长数字串(通常是十六进制),而这个数字串就被称为“数字指纹”或“数字签名”,提到了指纹相信大家应该就很能理解它的独一无二特性了。

     MD5

    MD5即Message-Digest Algorithm 5(信息-摘要算法 5),由RSA公司发明,用于确保信息传输完整一致。是计算机广泛使用的杂凑算法(又译摘要算法、哈希算法)之一,主流编程语言普遍已有MD5实现。有 MD5自然就应该有MD2、MD3和MD4了(不过是没有MD1的)。
 将数据(如汉字)运算为另一固定长度值是杂凑算法的基础原理,也就是将任意长度的字节串变换成一定长度的数字串(通常是十六进制),每次对文件的任何改动都会使这个数字串(即“数字指纹”)发生变化且能够保证与原“数字指纹”甚至是世界上任何文件的“指纹”绝对不同,说到这里,相信很多人都意识到了它的价值所在了,事实上,它被广泛用于各种软件的密码认证和钥匙(即序列号)识别上。我们经常会在某些软件下载站点的某软件信息中看到其MD5值,其目的就是为了让你使用校验工具算出下载的文件的MD5值然后与网站提供的MD5作比较,一旦不同,就说明下载的文件是事先被修改过的,提醒你不要使用。

      实际上,MD5虽然是目前最完善的MD加密算法,但仍然是有可能使用特殊设备产生相同的MD5值(平均每24天能产生一个),但显然,现实社会中,这种冲突基本可以忽略,因而,在计算机领域,它有着极广泛地应用。

      SHA1

     SHA(Secure Hash Algorithm,即安全散列算法)由美国国家技术标准研究所建议,美国国家标准和技术局发布的国家标准FIPS PUB 180-1,一般称为SHA-1,即是我们所说的SHA1,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用,其原理是将一段明文使用不可逆的算法转换成一段短的定长的密文(即十六进制数字串),同样,这种密文也是全球独一无二的,一旦经此算法加密的文件再次发生变化,其SHA1值就会变成不与已有SHA1相同的新的SHA1值,从强度上而言,SHA1比MD5更加强大。同样和MD5有着类似的应用。

     值得中国人骄傲的是,这两种算法均被我国的山东大学教授王小云先后破解,也就是说,即使对加密文件进行了修改,但可以对原有的MD5或SHA1值进行伪造(基本算是还原了原值),此项突破宣告了固若金汤的世界通行密码标准MD5的堡垒轰然倒塌,引发了密码学界的轩然大波。不过,这是理论而言,没有人会用它对一般的软件(包括操作系统)使用此破解技术(没有必要,也划不来)。

      CRC

      CRC(Cyclical Redundancy Check即循环冗余码校验),它是一种侦错算法,主要在数据的传输中广泛应用,发送方将数据发送出去的同时也发送了根据数据计算出来的CRC值,而接收方会采用同样的算法算出收到的数据的CRC并于收到的CRC比照,显然,如果不同,则说明收到的数据出错了(如数据发送过程中产生丢失而不完整)。CRC 又分为几种标准,分别是CRC-12码、CRC-16码、CRC-CCITT码、CRC-32码,其中CRC-32多用于点对点传输中。

      下面举一个CRC-32应用的简单例子,比如你到微软官网下载操作系统,下载完成之后,使用校验工具算出其CRC-32值,然后再将它与微软官网上提供的 CRC-32对比,相同则文件正常传输,不同就说明出错了,最好重新下载(否则安装过程可能出错),不过一般情况下是不会出现这种错误的,可以放心。

关键词(Tag): md5 crc window7 sha1


最新评论

发表评论

*昵称

已经注册过? 请登录

Email
网址
*评论