精华内容
下载资源
问答
  • 全面理解哈希函数及其应用

    千次阅读 2021-06-09 20:41:08
    哈希函数是指一种能够讲任意数据转换为固定长度编码的一种函数,因为不同数据得到的哈希值可能相同,因此哈希过程一般是不可逆的,哈希函数可以应用的密码加密,哈希存储等方面。 好的哈西函数应该具备以下特点: ...

    1. 哈希函数

    哈希函数是指一种能够讲任意数据转换为固定长度编码的一种函数,因为不同数据得到的哈希值可能相同,因此哈希过程一般是不可逆的,哈希函数可以应用于密码加密,哈希存储等方面。
    好的哈西函数应该具备以下特点:

    1. 相同的数据得到的哈希值唯一
    2. 通过哈希值无法通过反向推导得到源数据
    3. 源数据发生微小改变,得到的哈希值完全不同,
    4. 长的字符也能快速的计算出哈希值
    5. 要尽量避免冲突(不同的数据得到的编码要尽量不同)

    2. 哈希加密算法

    比如对用户密码的加密,如果使用明文来存储用户密码,那么管理员很容易就能在后台获取用户的密码并登录系统,如果通过哈希函数进行加密,那么管理员在后台只能看到通过哈希函数计算得到的哈希值,并且由于哈希函数不可逆的特性,管理员无法通过哈希函数得到用户密码的明文,从而对用户密码进行加密。

    当然,用户一般不会设定太过于复杂的密码,因此黑客可以穷举常用的密码组合并计算相应的哈希值,然后和用户的哈希值进行一一比对,从而获取密码明文;当然实际密码加密过程往往更加复杂,也更难被破解,这里不展开讲。

    3. 哈希存储

    哈希存储用一句话概括就是:将每个数据通过哈希函数编码成一个二进制编码,然后将这个二进制编码作为地址来保存这个数据

    顺序表和链表在查找数据时,都需要从列表的第一个元素开始进行比对,直到检索到目标元素或者检索不到;而哈希存储可以根据源数据直接计算出数据的存储的地址,根据地址直接修改删除或校验数据即可,节省了数据比对的时间。

    哈希表适用于那种查找性能要求高,数据元素之间无逻辑关系要求的情况。例如做文件校验或数字签名。当然还有快速查询功能的实现。

    3.1 优点

    1. 哈希存储在数据的查找、删除、修改方面有较高的效率,可以在O(1)内遍历元素;

    3.2 缺点

    1. 哈希是以 key-value的形式存储数据的,因此数据之间没有顺序,无法通过下标访问数据
    2. 占的空间大,牺牲空间换取了效率
    3. 当哈希表接近装满的状态时,性能下降得非常严重;因为当哈西表空间不足时需要执行扩容操作且扩容操作非常耗时。例如哈希表的长度是100,现在有第101个数要插入,这时,不仅哈希表的长度可能要扩展到150,且扩展之后所有的数都需要重新rehash。因此在设计哈希表时最好能够提前预知数据量的大小。

    4. 哈希函数的其他应用

    哈希函数的其他用用还包括: 数据校验、版权校验、大文件分块校验、负载均衡、服务器缩容、服务器扩容、虚拟节点,具体的介绍请参考此文章->什么是 hash? - 腾讯技术工程的回答 - 知乎

    展开全文
  • 哈希函数应用

    千次阅读 2018-10-30 21:35:28
    使用单向散列函数可以构造消息认证码。 消息认证码是将“发送者和接收者之间的共享密钥”和“消息,进行混合后计算出的散列值。使用消息认证码可以检测并防止通信过程中的错误、篡改以及伪装。 数字签名 在进行数字...

    消息认证码
    使用单向散列函数可以构造消息认证码。
    消息认证码是将“发送者和接收者之间的共享密钥”和“消息,进行混合后计算出的散列值。使用消息认证码可以检测并防止通信过程中的错误、篡改以及伪装。

    数字签名
    在进行数字签名时也会使用单向散列函数。
    数字签名是现实社会中的签名(sign)和盖章这样的行为在数字世界中的实现。数字签名的处理过程非常耗时,因此一般不会对整个消息内容直接施加数字签名,而是先通过单向散列函数计算出消息的散列值,然后再对这个散列值施加数字签名。

    伪随机数生成器
    使用单向散列函数可以构造伪随机数生成器。
    密码技术中所使用的随机数需要具备“事实上不可能根据过去的随机数列预测未来的随机数列”这样的性质。为了保证不可预测性,可以利用单向散列函数的单向性。

    一次性口令
    使用单向散列函数可以构造一次性口令(one-time password)。
    一次性口令经常被用于服务器对客户端的合法性认证。在这种方式中,通过使用单向散列函数可以保证口令只在通信链路上传送一次(one-time),因此即使窃听者窃取了口令,也无法使用。

    展开全文
  • 哈希函数介绍及应用

    千次阅读 2020-05-02 03:07:05
    哈希函数 又叫做散列函数f: x -> y, 理论上输入域x是无穷的并且远远大于输出域y,...应用这个性质,哈希函数可以打乱输入顺序。 从数学的角度看,找到一个函数使得每一个输出位置对应的输入是独立的,可以理...

    哈希函数

    又叫做散列函数f: x -> y, 理论上输入域x是无穷的并且远远大于输出域y,每一个输入对应一个固定的输出,所以一定会存在多个输入对应一个输出。除此之外,哈希函数有一个非常重要的性质,所有的输入是均匀分配在输出上的,或者说每个输入出现在输出位置之间是相互独立的。应用这个性质,哈希函数还可以打乱输入顺序。

    从数学的角度看,找到一个函数使得每一个输出位置对应的输入是独立的,可以理解为每一个位置都拥有一个独立的哈希函数,而且是均匀分布的。

    如何由一个哈希函数产生多个独立的哈希函数?

    已知著名的哈希函数H,我们H产生的输出进行切分,再将前半部分的结果H1和后半部分的结果H2进行线性组合,这样产生的新的哈希函数之间都是相互独立。

     

    哈希表

    输入一个(key,value)对,对key计算哈希值然后mod一个size(mod过后可以确定哈希表的大小为size - 1),然后将该key value pair存储到相对应的位置(经典的是链表形式,哈希值相同的往后挂),当存储的容量使得查询变慢的时候,需要进行扩容操作(将所有的pair重新计算一遍哈希值然后mod一个更大的size再进行存储,为什么不直接建立一个新的哈希表直接放进去?因为不知道如何对应)。就算经过均摊也无法认为是O(1),因为扩容操作可以离线进行,所以在生产中可以认为是O(1)的。

    JVM中是数组加红黑树实现的,key放在红黑树里面。

     

     

    举个散列函数在大数据中的应用的例子。将大任务变成小任务。

    比如说要对100TB的文件中进行去重整理,单核是不可能完成的,一定要借助于多台机器去完成。那么如何保证同样的字符串可以分配到一台电脑上呢。根据哈希函数的性质,同样的输入必定对应着同样的输出,不同输入均匀分布,这样就可以完成数据的分类。比如我由1000太机器,对每个字符串求个哈希值然后mod1000,根据结果分配到对应的机器上。

     

    布隆过滤器: 将大内存限制成小内存

    场景:爬虫去重和黑名单问题

    流程:

    确定布隆器大小m

     m = -\frac{n * lnP}{(ln2)^{2}} , m是布隆过滤器大小, P是期望失误率, n是样本

    确定哈希函数个数K

    K = ln2 * \frac{m}{n}

    失误率  

    (1 - e^{-\frac{nK}{m}})^{K}

     

    抗压服务器

    一致性哈希结构降低数据迁移代价,同时负载均衡。

    虚拟节点技术 + 哈希 = 分子的热运动,均衡分布。

    展开全文
  • 哈希函数应用

    2015-04-07 15:18:44
    这是一个哈希函数应用及MD5算法的介绍
  • 密码学哈希函数A Hash Function is a mathematical function that converts a numerical value into another compressed numeric value. The input value for the hash functions can be of arbitrary length, but ...

    密码学哈希函数

    A Hash Function is a mathematical function that converts a numerical value into another compressed numeric value. The input value for the hash functions can be of arbitrary length, but the output text that it will produce will always be of fixed length.

    哈希函数是一种数学函数,可将数字值转换为另一个压缩数字值。 哈希函数的输入值可以是任意长度,但是它将产生的输出文本始终是固定长度。

    哈希函数的属性 (Properties of Hash Functions)

    1. Compressed output

      压缩输出

    2. Fixed Length Output

      定长输出

    3. Pre-Image Resistance

      像前电阻

    4. Second pre-Image Resistance

      二次成像前电阻

    5. Collision Resistance

      耐碰撞

    应用程序和哈希函数 (Applications and of the hash functions)

    Password storage:

    密码存储:

    Due to the pre-Image resistance and collision resistance property, the hash functions are ideal to use for storing the passwords. Therefore, the values that are stored in the database are the user-Id in its original form and the hash value of the password. Therefore, whenever you enter the Id and password into a system, it searches for the user-Id, if available, it matches the hash values of the entered password and the password that is already there in the database. If both are the same, then access is granted.

    由于具有前图像抗性和抗碰撞性,因此哈希函数非常适合用于存储密码。 因此,存储在数据库中的值是原始形式的用户ID和密码的哈希值。 因此,每当您将Id和密码输入系统时,它都会搜索user-Id(如果可用),它将与输入密码的哈希值和数据库中已经存在的密码匹配。 如果两者相同,则授予访问权限。

    This provides:

    提供:

    1. Authentication:

      认证方式

      Whenever the user enters the id and password, the id is matched with the one with the present in the database, and the password entered is then and there converted into its hash value and is compared with that stored in the database.

      每当用户输入ID和密码时,ID就会与数据库中存在的ID进行匹配,然后将输入的密码转换为哈希值并与数据库中存储的哈希值进行比较。

    2. Provides high-level security:

      提供高级安全性

      The hash function technique provides extreme level security, because even if the hacker or attacker is successful in breaking into the system’s database, all he gets is the user-Id and the hash value of the password, and getting the original password form this hash value is almost impossible.

      哈希函数技术提供了最高级别的安全性,因为即使黑客或攻击者成功闯入系统数据库,他得到的只是用户ID和密码的哈希值,并从该哈希值获取原始密码几乎是不可能的。

    applications of hash functions


    Fig. The storage and Authentication methods for Id passwords.
    Reference link: https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&ved=2ahUKEwi-vZHc4fXmAhWgIbcAHb5JBfgQjRx6BAgBEAQ&url=https%3A%2F%2Fwww.darkreading.com%2Fsafely-storing-user-passwords-hashing-vs-encrypting%2Fa%2Fd-id%2F1269374&psig=AOvVaw1p7DLjEAMSySYPZaaUqO_c&ust=1578633364016737

    图:Id密码的存储和身份验证方法。
    参考链接:https://www.google.com/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&ved=2ahUKEwi-vZHc4fXmAhWgIbcAHb5JBfgQjRx6BAgBEAQ&url=https%3A%2F%2Fwww.darkreadinglytoring.com -passwordshashing-vs-encrypting%2Fa%2Fd-id%2F1269374&psig = AOvVaw1p7DLjEAMSySYPZaaUqO_c&ust = 1578633364016737

    Data Integrity check:

    数据完整性检查:

    To maintain the data integrity, the sender sends both the message and its hash value to the user. The Receiver then checks whether the hash value of the message is the same as the hash value sent by the sender. This ensures that no modification has been done in the data while being transmitted. This process of integrity checks can be seen in email systems, messaging applications, etc. However, as everything takes place in the back-end, the user cannot identify this process.

    为了保持数据完整性,发送方将消息及其哈希值发送给用户。 然后,接收方检查消息的哈希值是否与发送方发送的哈希值相同。 这样可以确保在发送时未对数据进行任何修改。 完整性检查过程可以在电子邮件系统,消息传递应用程序等中看到。但是,由于一切都在后端进行,因此用户无法识别此过程。

    Digital Signature:

    电子签名:

    A signature is usually used to bind signatory to the message. The digital signature is thus a technique that binds a person or the entity to the digital data. This binding ensures that the person sending the data is solely responsible for being for it and this binding can be verified by the receiver and the third party. This digital signature is also stored using hash functions so that no one’s signature can be stolen and be misused.

    签名通常用于将签名者绑定到消息。 因此,数字签名是将个人或实体绑定到数字数据的技术。 此绑定确保发送数据的人对此负全责,并且此绑定可以由接收方和第三方验证。 此数字签名也使用哈希函数存储,因此任何人的签名都不会被盗用或滥用。

    翻译自: https://www.includehelp.com/cryptography/applications-of-hash-function.aspx

    密码学哈希函数

    展开全文
  • 量子哈希函数及其在量子密钥分发,伪随机数生成和图像加密中的隐私放大中的应用
  • 之所以要介绍这一小节,主要是几乎所有的哈希函数应用都离不开定义和性质,也正是因为哈希函数拥有这些性质才在各种场景发挥着优秀的性能。 定义: ,其中输入域为无穷,值域为有限域。 哈希函数的定
  • 就是说,你输入任何长度、任何内容的数据,哈希函数输出固定长度、固定格式的结果,这个结果类似你输入数据的指纹。只要输入发生变化,那么指纹一定会发生变化。不同的内容,通过哈希函数得到的指纹不一样。这就是...
  • 哈希函数

    万次阅读 多人点赞 2018-03-01 08:12:14
    什么是 HashHash(哈希),又称“散列”。散列(hash)英文原意是“混杂”、“拼凑”、“重新表述”的意思。在某种程度上,散列是与排序相反的一种操作,排序是将集合中的元素按照某种方式比如字典顺序排列在一起,...
  • 什么哈希函数

    千次阅读 2020-09-25 11:45:24
    H可应用于任意大小的数据块。 H产生定长的输出。 对任意给定的x,计算H(x)比较容易,用硬件和软件均可以实现。 出于安全性考虑,对哈希函数的三个安全性假设: 对任意给定的散列值h,找到满足H(x)=h的x在计算上是...
  • 什么哈希? 比方我有个原始值,“老铁双击666”, 通过某种算法(比如java的hasecode(获得变量的物理信息))得到的“哈希码”是“254874125”(将字符串转换成尽可能不重复的int类型数字), 然后通过哈希算法(如...
  • 常用哈希函数介绍

    千次阅读 2021-03-31 16:21:32
    通常,包含哈希函数的算法的算法复杂度都假设为O(1),这就是为什么在哈希表中搜索数据的时间复杂度会被认为是"平均为O(1)的复杂度". 在讲解具体内容前,首先我们要清楚以下几个概念: 冲突(碰撞) 对于不同的...
  • 哈希原理与常见哈希函数

    千次阅读 2020-01-09 18:11:06
    转换的方法称为哈希函数,原值经过哈希函数计算后得到的值称为哈希值。 1.哈希特点 (1)一致性:同一个值每次经过同一个哈希函数计算后得到的哈希值是一致的。 F(x)=rand() :每次返回一个随机值,是不好的哈希 (2)...
  • 区块链中的哈希函数

    千次阅读 2021-08-22 16:06:20
    哈希函数是一个公开函数,可以将任意长度的消息M映射成为一个长度较短且长度固定的值H(M),称H(M)为哈希值、散列值(Hash Value)、杂凑值或者消息摘要(Message Digest)。 (2)它是一种单向密码体制,即一个...
  • 密码学哈希函数 什么哈希函数? (What is a Hash Function?) A Hash Function is a mathematical function that converts a numerical value into another compressed numeric value. So, it compresses the text....
  • 1. 哈希表就是数组+哈希函数,其核心思想是利用数组可以按照下标索引随机访问数据的特性。 2. 哈希冲突的原因:数组的有界,哈希函数的计算,哈希值的映射。 3. 解决哈希冲突的方法:数组扩容,设计优秀的哈希函数,...
  • 哈希函数的原理及应用

    千次阅读 2015-01-17 15:13:29
    哈希(Hash)函数又称为散列函数、杂凑函数。...哈希函数可以将满足要求的任意长度的输入经过变换后得到固定长度的输出。这个固定长度的输出称为原消息的散列或消息摘要(Message Digest)。哈希函数的数学表述为:...
  • 哈希函数理解

    千次阅读 2018-05-08 21:49:35
    简介  Hash,一般翻译做“散列”,也有直接音译为“哈希”的,就是...顾名思义,该数据结构可以理解为一个线性表,但是其中的元素不是紧密排列的,而是可能存在空隙。  散列表(Hash table,也叫哈希表),是根据关键
  • 哈希算法(哈希函数)基本

    千次阅读 2021-09-19 16:33:42
    一、什么是哈希(Hash) 哈希也称“散列”函数或“杂凑”函数。它是一个不可逆的单向映射,将任意长度的输入消息M...这是哈希函数安全性的基础。 灵敏性:对输入数据敏感,哪怕只改了一个Bit,得到的哈希值也大不相同
  • 它能进行有效计算,简单来说就是对于特定的输入字符串,在合理时间内,我们可以算出哈希函数的输出。更准确地说,对应n位的字符串,其哈希值计算的复杂度为O(n)。 1.2 由于安全附加的几个特性
  • 哈希(哈希表与哈希函数

    千次阅读 2018-07-04 14:32:43
    1、哈希函数2、哈希表3、哈希函数在大数据中应用1.1哈希函数哈希函数的性质哈希函数又名散列函数,对于经典哈希函数来说,它具有以下5点性质:1、输入域无穷大2、输出域有穷尽3、输入一样输出肯定一样4、当输入不...
  • 哈希函数和哈希表

    千次阅读 2019-05-08 16:31:12
    经典哈希函数的性质(散列函数) 1.输入域无穷大 2.输出域是有穷尽的 3.输入参数相同,返回哈希值不变(不是随机函数) 4.输入不同,哈希值亦可能相同,哈希碰撞 5.离散性:举例:input-0~98,out-0、1、2,...
  • 哈希(散列)函数的一些应用

    千次阅读 2018-10-18 11:16:04
    目录 hash表的原理与实现 Java中的hashcode()方法 Collection中HashMap的应用 ...Bloom Filter在海量数据中的应用 ...映射函数就称之为hash函数。存放映射的数组称之为hash表 冲突(碰撞collisi
  • 哈希函数和数字签名

    2021-09-13 18:54:27
    目录1 哈希函数 Hash1.1 构造方法1.2 哈希函数在密码学的应用2 数字签名2.1 签名--认证流程2.2 一个生动形象的例子 在讲数字前面以前,我们先要了解一下哈希函数 1 哈希函数 Hash Hash,一般翻译做散列、杂凑,或...
  • 1.1 密码学哈希函数

    千次阅读 2018-09-12 15:13:01
    我们需要理解的第一个密码学的基础知识是密码学哈希函数哈希...● 它能进行有效计算,简单来说就是对于特定的输入字符串,在合理时间内,我们可以算出哈希函数的输出。更准确地说,对应n位的字符串,其哈希值计算...
  • 如今越来越多的物联网设备带来了对哈希函数的需求,而传统的哈希函数又因为资源受限而不能直接应用,所以必须得针对该类设备重新设计,提出了一种新的轻量哈希函数HBL(Hash Function Based on LEA),它采用了主流...
  • 任何关于算法、编程、AI行业知识或博客内容的问题,可以随时扫码关注公众号「图灵的猫」,加入”学习小组“,沙雕博主在线答疑~此外,公众号内还有更多AI、算法、编程和大数据知识分享,以及免费的SSR节点和学习资料...
  • 重温数据结构:哈希 哈希函数 哈希表

    万次阅读 多人点赞 2016-10-27 00:49:30
    什么是 HashHash(哈希),又称“散列”。散列(hash)英文原意是“混杂”、“拼凑”、“重新表述”的意思。在某种程度上,散列是与排序相反的一种操作,排序是将集合中的元素按照某种方式比如字典顺序排列在一起,...
  • 哈希函数的一些知识

    2020-12-10 06:44:46
    什么哈希函数哈希函数是一个数学函数,其具有以下三个特性: 输入可以为任意大小的字符串; 其产生固定大小的输出; 对于特定的输入字符串,能在合理时间计算出结果。对应n位的字符串,其哈希值计算的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 127,040
精华内容 50,816
关键字:

哈希函数可以应用于什么