MD5与SHA1 HASH这些东西,有啥相同点与不同点?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MD5与SHA1 HASH这些东西,有啥相同点与不同点?相关的知识,希望对你有一定的参考价值。
有些软件算MD5,有些是SHA1,这有什么优缺点?不要网上复制的那些长篇大论……
HASH是根据文件的内容的数据通过逻辑运算得到的数值, 不同的文件(即使是相同的文件名)得到的HASH值是不同的, 所以HASH值就成了每一个文件在EMULE里的身份证. 不同HASH值的文件在EMULE里被认为是不同的文件,相同的HASH值的文件的内容肯定是完全相同(即使文件名不同). HASH值还有文件校验的功能,相当于文件的校验码. 所以还可以用来检查文件下载是否正确(所以EMULE下载完毕时,都会在HASH文件一遍, 检查文件是否出错)打个比喻,文件的SHA1值就像人的指纹,是文件的数字指纹,是唯一的,一个文件对应一个唯一的SHA1值,一般用来确认你的文件和官方发布的是否一致.如果官方原版文件被别人做过手脚,那么算出来的SHA1值就会不同.所以SHA1值是用来“验明正身”的。有些居心叵测的人在官方系统光盘里面加入木马程序、广告程序等,然后再放出来给人下载,如果你不检查SHA1值就贸然安装就中招了,可以在网上下载一个数字指纹检验器来计算你下载回来的win7系统文件的SHA1值,然后到微软的MSDN去查看官方发布的SHA1值,如果两者相等,说明你下载的文件是和官方提供的是一样的,你可以放心的安装了。这就是SHA1值的用处,其他地方不用SHA1值的。
操作系统的ISO文件一般可以直接刻盘安装,不用解压出来。为了保险起见你最好用“UltraISO”软件打开你的ISO文件,如果显示为“可启动XX文件”那么你就放心直接刻录吧。
MD5的
md5
典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如:
MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461
这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯一的MD5信息摘要。为了让读者朋友对MD5的应用有个直观的认识,笔者以一个比方和一个实例来简要描述一下其工作过程:
大家都知道,地球上任何人都有自己独一无二的指纹,这常常成为公安机关鉴别罪犯身份最值得信赖的方法;与之类似,MD5就可以为任何文件(不管其大小、格式、数量)产生一个同样独一无二的“数字指纹”,如果任何人对文件做了任何改动,其MD5值也就是对应的“数字指纹”都会发生变化。
我们常常在某些软件下载站点的某软件信息中看到其MD5值,它的作用就在于我们可以在下载该软件后,对下载回来的文件用专门的软件(如Windows MD5 Check等)做一次MD5校验,以确保我们获得的文件与该站点提供的文件为同一文件。利用MD5算法来进行文件校验的方案被大量应用到软件下载站、论坛数据库、系统文件安全等方面。
参考技术A Hash,一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
MD5与SHA1都是Hash算法,MD5输出是128位的,SHA1输出是160位的,MD5比SHA1快,SHA1比MD5强度高。本回答被提问者采纳
什么是更好的? Password_hash vs. SHA256 vs. SHA1 vs. md5
【中文标题】什么是更好的? Password_hash vs. SHA256 vs. SHA1 vs. md5【英文标题】:What is better? Password_hash vs. SHA256 vs. SHA1 vs. md5 【发布时间】:2015-05-22 17:40:39 【问题描述】:salt
有什么更好的密码存储方式?
MD5:
$hash = md5($password . $salt);
密码哈希:
$hash = password_hash($password, PASSWORD_DEFAULT, $salt);
SHA1:
$result = sha1($salt.$string);
【问题讨论】:
我投票结束这个问题,因为它是关于分析安全属性并且没有编程问题。 看看***.com/questions/2235158/… 你是对的。这确实涉及安全性。据我所知,这里没有编程。 【参考方案1】:当您存储大量密码时,Salt 非常有用,否则它们就相当无用,因为它们以明文形式存储。如果攻击者设法获得了您的散列密码,那么假设他们可以得到您的盐。 使用 SHA-256,因为它是一个强大的加密哈希函数,并使用盐。但最重要的是,只需使用强密码和强哈希算法即可。
【讨论】:
【参考方案2】:你绝对应该使用 password_hash() 函数而不提供你自己的盐:
$hash = password_hash($password, PASSWORD_DEFAULT);
该函数将自行生成一个安全的盐。其他算法的哈希密码速度太快,因此很容易被暴力破解(大约每秒8 Giga MD5)。
【讨论】:
当您需要进行身份验证并且您不知道已生成的盐时怎么办?我要求学习。不改正。 没关系....使用password_verify()函数。将我的 cmets 留给有相同问题的未来用户。以上是关于MD5与SHA1 HASH这些东西,有啥相同点与不同点?的主要内容,如果未能解决你的问题,请参考以下文章
什么是更好的? Password_hash vs. SHA256 vs. SHA1 vs. md5