简单来说hash就是散列值

简单来说hash就是散列值。概念就是:输入一个长度不固定的字符串,返回一串定长度的字符串,又称HASH值。 (这个长度可以是几b到几Gb不等) (8位、16位、32位……)比如现在比较常用的一种 hash 算法就是 MD5 算法了,DVBBS 、6KBBS、LeadBBS 等都是用它对密码进行加密的,你要做病毒检测的话那就举个更贴切的例子:你去网上下个linux软件看看,是不是大部分下载地址旁边都有个MD5 值?那就是一个很典型的hash值。也就是如前面所说,(我以病毒和文件为例子)一个文件在它没被病毒感染、修改的时候通过同一种 hash 算法在不同的地方能得到相同的一个值,但如果这个文件被改变了一点,哪怕是1bit,都会让整个文件的hash值改变。通过观察hash值你就可以知道文件被修改过了没有,如果被改过了,那么这个文件可能就不安全了!举个更实际的例子:假设你是个网站的站长,你有一个很好的文件要给大家分享,你把它放在你的网站上,但你不放心——万一你的网站被黑客入侵,并用一个病毒文件伪装成那个文件的话,那么下载你软件的人就要被病毒感染了!怎么样才能更安全的给别人下载呢? 你只要把原来的文件,用某种 hash 算法来得到它相对应的hash值,并把算法跟 hash 值告诉要下载的人,下载的人把软件下载回来以后就按照你的算法,来计算他下载到的那个文件。如果他算出来的结果跟你给他的那个hash值一样,那么这个文件就没有什么问题了。如果不等,那这个文件就有猫腻了!只是解释了一下什么是hash,单向的hash 就是说根据字符串能求出散列值,但根据散列值,除了穷举以外没有办法能求出字符串的,就是传说中的单向 hash 了,就向前面的那个例子 MD5 一样,别问我为什么老是拿md5来当例子,因为它最常用,更重要的是,它被我国的王小云教授找到了算法的缺陷,虽然还是不能破掉,但这也是一个很大的进步了!希望我的罗嗦能给你些帮助!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/92530/viewspace-128003/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/92530/viewspace-128003/

你可能感兴趣的:(简单来说hash就是散列值)