您现在的位置: 哈希hash论坛 > 哈希竞猜 > 哈希函数的三个性质

哈希函数的三个性质

来源:哈希交流群  热度:   时间:2022-05-15 20:39
比特币是世界上第一种成功的加密货币,之前的尝试都没有像比特币这样有效解决有关货币的各种问题。 比特币本身是密码学发展的产物,利用了密码学中的很重要的单向散列函数以及...
比特币是世界上第一种成功的加密货币,之前的尝试都没有像比特币这样有效解决有关货币的各种问题。

比特币本身是密码学发展的产物,利用了密码学中的很重要的“单向散列函数”以及数字签名两大技术来构建,今天我们来集中讲解单向散列函数的5种重要的特性。

哈希函数的特性:

单向散列函数(one-wayhash function),也就是通俗叫的哈希函数。

第一个特点:输入可以任意长度,输出是固定长度

哈希函数不用知道输入信息代表的是什么意思,也无所谓信息的长度有多长,只要输入hash函数出来的都是固定长度的比特值。比如非常有名的SHA256 哈希函数,输入任何值出来的都是256比特的0和1. 输入一本《三国演义》或者仅仅输入一个字母a,出来的都是256位比特长度的数据。

第二个特点:计算hash值的速度比较快

这一点经常被大家所忽略,似乎是习以为常的东西就不去在意,其实这一点同样重要,因为单向哈希的计算很快,才能保证加密或者验证的速度。

第三个特点,防碰撞特性(Collisionresistance)

X≠y,H(x)=H(y) 输入空间远远大于输出空间,比如256位的哈希值指的就是输出空间是2^256这么多,输入是无限可能的,输出是固定长度。

但是,目前没有找到没有好的方法去找出一个x能得到H(x)等于右边的值。

遍历所有输入的可能能去找到这个值,叫做brute-force暴力破解吗,也就是现在矿机所谓的“哈希碰撞”这个词的来源。

哈希防碰撞用处是保证上传和下载的数据是一样的,就是改一点点出来的结果差很多。举个例子,你输入的信息是一部《红楼梦》(当然电脑识别出来就是0和1),然后你在红楼梦的第100页的第五句话把一个逗号改成句号,然后输出的hash值就完全不同了。这就是哈希函数一个非常重要的特性。

但是collision resistance目前没有数学证明这个碰撞不会发生,MD5就是最好的例子,之前是很安全的,但是后来找到了破解方法