签名与加密安全技术基础(一)------哈希算法

一、hash算法

著名
hash算法,MD5SHA1可以说是目前应用最广泛的Hash算法,而它们都是以MD4为基础设计的。
那么他们都有什么用途呢?

哈希算法有如下特性:

1)不可以从消息摘要中复原信息;

2)两个不同的消息不会产生同样的消息摘要;

1.1 MD5算法

MD5RSA数据安全公司开发的一种单向散列算法MD5 全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的指纹(或称报文摘要),不同的文件产生相同的报文摘要的可能性是非常非常之小的。MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改。

md5sum  filename.zip

“file_md5”: “b1f37a708c8ed2dea463d77cce154a8b”,

MD5 严格来说不是加密算法,因此他产生的数据不能叫密文。但是它经常被归为“不可逆的加密算法”,一般用作数据库用户密码的保存。

MD5 是一种消息摘要算法,他产生的数据称为消息摘要值MD5码可以唯一地代表原信息的特征,通常用于密码的加密存储,数字签名,文件完整性验证等。

1)用作数据库用户密码的加密;

Android数据库存储加密,比如用户名的密码,密码通常采用的就是md5哈希值,长度固定,只需要固定32个字节属性。  永远不需要还原明文信息。 登录比较,md5(“明文密码”)=数据库密码md5 hash值。像csdn.net网站过去采用明文存储密码是相当愚蠢和危险的。

2)用于文件的完整性检验;比如广升OTA升级包package.zip中加入md5哈希序列。

3)用于数字签名。对重要内容生成md5哈希序列,再利用非对称算法私钥对md5哈希序列加密。




 问题:md5sum跟文件创建时间有关系吗?跟文件名有关系吗??

  文件下载时,通常文件在客户端是被重新创建的, 如果“md5sum跟文件创建时间有关系”的话,“MD5算法被用来验证网络文件传输的完整性,防止文件被人篡改”的意义何在?

完全没有意义了!(当然也不能否认有些下载软件把把文件属性信息也一起传送,比如在 FlashGet 的选项里有“从服务器获取文件日期”一项

大家都知道md5或者SHA-1这种hash散列算法,是对文件内容本身逐位bit 计算。假设“
md5sum跟文件创建时间”真的有关系,那么文件创建、修改、访问时间的属性应该是文件本身的一部分了。 答案显示不是这样的…..,
 新建 一个txt文本文件, 文件的
创建、修改、访问时间的属性均有,文件显示为0字节。用Uedit边切换至十六进制模式都不可用。很明显文件完全是空的。
具体存在哪里,有兴趣自己研究。




1.2安全哈希算法Secure Hash Algorithm

主要适用于数字签名标准 Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。

SHA-1: 对于长度小于2^64位的消息(2,097,152TB)SHA-1会产生一个160位的消息摘要,因此抗穷举(brute-force)性更好,当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要SHA-1在许多安全协议中广为使用,包括TLSSSLPGPSSHS/MIMEIPsec,曾被视为是MD5(更早之前被广为使用的散列函数)的后继者。

二、MD5破解方法

     一些黑客破获这种密码的方法是一种被称为跑字典的方法。有两种方法得到字典,一种是日常搜集的用做密码的字符串表,另一种是用排列组合方法生成的,先用MD5程序计算出这些字典项的MD5值,然后再用目标的MD5值在这个字典中检索。

     即使假设密码的最大长度为8,同时密码只能是字母和数字,共26+26+10=62个字符,排列组合出的字典的项数则是P(62,1)+P (62,2)….+P(62,8),那也已经是一个很天文的数字了,存储这个字典就需要TB级的磁盘组,而且这种方法还有一个前提,就是能获得目标账户的密码MD5值的情况下才可以。

 

三、两位历史性重要人物

  《签名与加密安全技术基础(一)------哈希算法》  《签名与加密安全技术基础(一)------哈希算法》

           王小云                                                Ronald L. Rivest

 

Ronald Rivest

 麻省理工学院教授,主要从事密码学、计算机和网络安全和算法的研究。1991年,Rivest开发出技术上更为趋近成熟的MD5算法。他和Adi ShamirLen Adleman一起发明了RSA公钥算法,也是RSA数据安全公司的联合创始人。

王小云:

 山东大学,王小云教授的贡献在于她找到了一种方法,可以在已知原文的情况下构造出另一个跟原文MD5值相同的串。并且该计算过程所消耗的时间是有限的、可计算的。其所提的杂凑冲撞算法只需少于269次方步骤,少于生日攻击法Birthday Attack)所需的280次方步。同年8月,王小云、姚期智,以及姚期智妻子姚储枫联手于国际密码讨论年会提出SHA-1杂凑函数杂凑冲撞算法的改良版。此改良版使破解SHA-1时间缩短为263次方步。

四 、签名与加密的核心区别  

  签名并不改变主体信息内容,并不对信息本身加密。而加密改变了加密对象原有的数据组织形式、内容,使原有内容变得不可读。 

  用私钥对信息摘要进行加密,这个过程叫签名;

  对生成摘要信息的原始内容重新生成摘要,并用公钥对加密的信息摘要进行解密,两者比对的过程,叫签名验证。

    原文作者:哈希算法
    原文地址: https://blog.csdn.net/kieven2008/article/details/45166327
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞