首页 基础 哈希函数

哈希函数

哈希函数(Hash)简介

定义

哈希函数,也称为哈希算法,是一种密码学算法,可以在有限合理的时间内,将任意长度的消息压缩为固定长度的二进制串,其输出值称为哈希值,也称为散列值。哈希函数在现代密码学中扮演着重要的角色,常用于实现数据完整性和实体认证,同时,也构成多种密码体制和协议的安全保障。在区块链中的作用是:为信息加密,用于为原始信息添加“密码语言。

比特币系统中使用了两个密码学哈希函数,一个是SHA256,主要用途是完成PoW(工作量证明)计算。另一个是RIPEMD160o,主要用于生成比特币地址。

三个性质

一、碰撞阻力

所谓碰撞是指两个不同的消息在同一个哈希函数作用下,具有相同的哈希值。而哈希函数的碰撞阻力是指寻找两个能够产生碰撞的消息在计算上是不可行的。

哈希函数的输入空间包含所有长度的任意字符串,但输出空间则只包含特定固定长度的字符串。因为输入空间比输出空间大(输入空间是无限的,而输出空间是有限的),一定会有输入字符串映射到相同的输出字符串,也就是说,碰撞是存在的。

举例:如果无法找到两个值,x和y,x≠y,而H(x))=H(y),则称哈希函数H具有碰撞阻力。

哈希函数的碰撞阻力特性常被用来进行完整性验证。完整性是信息安全的3个基本要素之一,是指传输、存储信息的过程中,信息不被未授权的篡改或篡改后能被及时发现。

二、原像不可逆

通俗来讲,是指知道输入值x,很容易通过哈希函数H计算出哈希值H(x);但是知道哈希值H(x),却不能通过哈希函数日计算出原来的输入值x。

原像不可逆的应用是承诺方案(CommitmentScheme),被认为是密码学领域中一类重要的密码学基本模型,具有隐藏性和约束性。

利用哈希函数的碰撞阻力和原像不可逆两个特性,承诺的隐藏性和约束性均能成立:

隐藏性一一如果仅仅知道承诺函数的输出,就如同只看到信封并不能得到信中的内容。

约束性一一这就确保了Tom一旦承诺信封内的内容,就不能再改变主意。

三、谜题友好

谜题友好性指的是没有便捷的方法去产生一满足特殊要求的哈希值。如果有人想通过锁定哈希函数来产生一些特殊的输出y,而部分输入值以随机方式选定,则很难找到另外一个值,使得其哈希值正好等于y。

哈希函数的难题友好特性,构成了基于工作量证明的共识算法的基础。例如,给定字符串”blockchain”,并在这个字符串后面连接一个整数值串x,对连接后的字符串进行SHA256哈希运算,要求得到的哈希结果(以十六进制的形式表示)以若干个0开头的。

按照这个规则,由x=1出发,递增x的值,我们需要经过2688次哈希计算才能找到前3位均为0的哈希值,而要找到前6位均为0的哈希值,则需进行620969次哈希计算。也就是说,没有更便捷的方法来产生一个满足要求的哈希结果。这样通过哈希运算得出的符合特定要求的哈希值,可以作为共识算法中的工作量证明。

相关推荐

返回顶部