哈希函数

作者: 会搬东西的小蚂蚁 | 来源:发表于2018-11-12 20:10 被阅读0次

    散列函数(英语:Hash function)又称散列算法哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。

    所有散列函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。这个特性是散列函数具有确定性的结果,具有这种性质的散列函数称为单向散列函数。但另一方面,散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的,但也可能不同,这种情况称为“散列碰撞(collision)”,这通常是两个不同长度的输入值,刻意计算出相同的输出值。输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不同的散列值。

    应用:

    1、验证两段信息是否相同。

        A使用QQ给B传了一个文件,这个文件会在QQ的服务器上保存下来。如果C也传了这个文件给D,QQ会对比这个文件的哈希值和A传给B的文件的哈希值是否相同,如果相同则说明是同一个文件,C就不需要再一次上传文件给服务器。这就是所谓的秒传。

        一个压缩包在传输的时候可能会有损坏。在压缩之前计算原文件的哈希值并放入压缩包中,待解压后再次计算解压文件的哈希值。对比压缩包中的哈希值则可以知道文件是否损坏。BT和迅雷下载中所谓的哈希验证也是同一道理。

    2、验证某人是否信息持有者。

        在一个论坛注册帐号,如果论坛把密码保存起来,因为无论坛多么安全都可能会被破解,所以密码总会有泄漏的可能性。    

        如果不保存密码而保存密码的哈希加密值。当你下次登陆论坛的时候,将你输入的密码的哈希值和你注册时密码的哈希值比对,如果相同则可以证明你就是密码持有者了。这样既保证了密码泄露的可能,又保证了验证持有者的功能。

    比特币应用:

        比特币地址生成的时候使用了哈希函数。

若对算法细节感兴趣,参考:https://www.cnblogs.com/huazhenghao/p/5516688.html

相关文章

  • 区块链学习入门笔记(一

    哈希函数 哈希函数:Hash(原始信息入参) = 摘要信息(回参) 哈希函数特点: 同样的原始信息用同一个哈希函数...

  • 计算文件哈希值

    什么是哈希值? 哈希值(hash values)是使用哈希函数(hash function)计算得到的值。哈希函数...

  • 区块链基础知识笔记(1) -- 密码学哈希函数

    密码学哈希函数是区块链的根基,也是很多安全系统的基石。 密码学哈希函数包含两个概念,哈希函数和密码安全。哈希函数是...

  • 左神初级算法课程第六讲笔记-哈希

    问题一:哈希函数和哈希表 哈希函数的性质:①输入域无穷大;②输出域有穷尽;③哈希函数不是随机的,多次相同输入计算返...

  • BitTribeLab科普丨一文读懂哈希函数

    哈希函数 哈希函数(Hash):h=H(Data) 定义 哈希函数H,将可变大小的数据Data作为输入,产生固定长...

  • 比特币私钥,公钥和地址的关系

    哈希函数 哈希函数(Hash Function),也称为散列函数,给定一个输入x,它会算出相应的输出H(x)。哈希...

  • 区块链技术之哈希算法

    一、哈希是什么? Hash,一般翻译为散列、音译为哈希。它是一种数学函数,又被称为散列函数。哈希算法又称为哈希函数...

  • 哈希

    哈希算法 哈希摘要 - 数字签名/数字指纹 - 防篡改/保护敏感信息 哈希算法是一个单向运算的函数(单向哈希函数)...

  • 哈希表

    映射(Map) 和 集合(Set) 哈希表(HashTable)、哈希函数(Hash Function)、哈希碰撞...

  • 算法入门(三)

    一、哈希函数 (1)性质 哈希函数的输入域无限大,但是输出域有限 哈希函数的返回值不是随机的,相同的输入必定有相同...

网友评论

    本文标题:哈希函数

    本文链接:https://www.haomeiwen.com/subject/cnzcfqtx.html