关于hash,你不得不知的秘密

在这里插入图片描述

hash的重要性?

大家可能有过这样的经历,大家用电脑在某不知名的网站下载了一个应用。然后安装该应用的时候,发现各种捆绑软件也被安装了。这让我们非常头疼。

那为什么会产生这种情况呢?原因是你下载的并不是纯净的应用,而是一个被大家填填补补过的应用。或许是被加入了木马、或者是被捆绑了软件。

那我们有没有方法避免这种尴尬情况的发生呢?那必须有,那就是判断hash值

①本地生成应用hash值
当我们出于下载速度或其他原因从第三方网站下载某个应用的时候,我们可以使用hash工具对该应用生成一个hash值,这里简称它为本地hash值

②获知官网hash值
搜索该应用官网,获知该软件对应的hash值,这里简称它为官网hash值。

③对比hash值
如果官网hash值和本地hash值一样,那么你所下载的应用就是安全的。
如果不一样,那么你所下载的软件就是被修改过的。


hash是什么?

hash,一般翻译为"散列",主要用于信息安全领域的加密算法,通过hash可以把一些不同长度的信息转化成杂乱的128位的编码里,叫做hash值。

hash函数可以用来做什么?

1)文件校验(即给文件打个标记,之后如果发现标记不对,说明不是原来的文件)

①文件传输后的校验,将得到的目标文件计算进行md5运算,与源文件的md5比对,如果两者一致,可以从统计上保证两个文件的每一个码元也是完全相同的。典型的如:FTP服务

②保存二进制文件系统的数字指纹,以便检测文件系统是否未经允许的被修改。在系统初始安装完毕后,建立对文件系统的基础校验,因为散列校验和的长度很小,所以很容易存储。这类比于记个标记。此后,可以定期或者根据需要,再次计算文件系统的校验和。如果发现两次的校验和不匹配,说明该文件已经被非法修改,或者是被病毒感染,或者被木马程序代替。

2)数字签名

运用非对称加密和hash函数结合实现数字签名,也就是应用自己的私钥对散列值进行加密所得到的的结果就是“数字签名”。

3)网站和系统安全

网站程序涉及到的数据库中,存放着用户的用户名和密码,如果采用明码存放在数据库中,一旦数据库被人恶意下载并打开,就能直接看到用户名和密码,从而造成系统用户信息的泄露。

针对以上问题,解决的方法通常是将数据加密后放入数据库中,常见的是将用户名明码存放,将密码加密后存放。而这对加密算法就有要求:单向、不可逆、不能被算法还原。MD5算法就符合这个条件

4)PKI

公钥基础设施(PKI)是一种运用公钥的概念与技术来实施并提供安全服务的具有普遍适用性的网络安全基础设施。而Hash函数在PKI中有着极其重要的地位,它可以额进行数据源认证和数据的完整性验证,还可以获得信息摘要。

消息摘要有两个基本属性:两个不同的报文难以生成相同的消息摘要;难以对一个指定的摘要生成一个报文,只能由报文推算出消息摘要。  一台自动取款机(ATM)不需要解密一个消费者的个人标识数字(PIN码)。磁条卡将顾客的代码单向地加密成一段HASH值,一旦插卡时,ATM机将计算用户PIN码的HASH值并产生一个结果,然后再将这段结果与用户卡上的HASH值比较。使用这种方法,PIN码是安全的,即使那些维护修理ATM机的人员也无法获取用户的信息。



Hash函数应满足的性质是什么?

那么根据上文的描述,我们很容易就可以想到hash函数的性质,即

1)单向性,从预映射,能够简单迅速的得到散列值,而在计算上不可能构造一个预映射,使其散列结果等于某个特定的散列值,即构造相应的M=H-1(h)不可行。

2)抗冲突性,即在统计上无法产生2个散列值相同的预映射。

原创文章 8 获赞 8 访问量 3864

猜你喜欢

转载自blog.csdn.net/qq2539879928/article/details/105974130