首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏若尘的技术专栏

    哈希算法

    所以,我们常听到有人把“散列表”叫作“哈希表”“Hash 表”,把“哈希算法”叫作“Hash 算法”或者“散列算法”。那到底什么是哈希算法呢?哈希算法的定义和原理非常简单,基本上一句话就可以概括了。 但是,要想设计一个优秀的哈希算法并不容易,需要满足的几点要求: 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法); 对输入数据非常敏感,哪怕原始数据只修改了一个 Bit,最后得到的哈希值也大不相同 = 425f0d5a917188d2c3c3dc85b5e4f2cb MD5("我今天讲哈希算法") = a1fb91ac128e6aa37fe42c663971ac3d 通过哈希算法得到的哈希值,很难反向推导出原始数据 比如上面的例子中,我们就很难通过哈希值“a1fb91ac128e6aa37fe42c663971ac3d”反推出对应的文本“我今天讲哈希算法”。哈希算法要处理的文本可能是各种各样的。 比如 13 这个数据,存储在编号为 3 这台机器上。但是新加了一台机器中,我们对数据按照 11 取模,原来 13 这个数据就被分配到 2 号这台机器上了。

    84774发布于 2021-11-23
  • 来自专栏叽叽西

    哈希算法

    哈希算法历史悠久,业界著名的哈希算法也有很多,比如 MD5、SHA 等。在我们平时的开发中,基本上都是拿现成的直接用。 所以,我今天不会重点剖析哈希算法的原理,也不会教你如何设计一个哈希算法,而是从实战的角度告诉你,在实际的开发中,我们该如何用哈希算法解决问题。 什么是哈希算法? 所以,我们常听到有人把“散列表”叫作“哈希表”“Hash 表”,把“哈希算法”叫作“Hash 算法”或者“散列算法”。那到底什么是哈希算法呢? 哈希算法的定义和原理非常简单,基本上一句话就可以概括了。 但是,要想设计一个优秀的哈希算法并不容易,根据我的经验,我总结了需要满足的几点要求: 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法); 对输入数据非常敏感,哪怕原始数据只修改了一个 Bit 有了鸽巢原理的铺垫之后,我们再来看,为什么哈希算法无法做到零冲突? 我们知道,哈希算法产生的哈希值的长度是固定且有限的。

    69320编辑于 2022-05-17
  • 来自专栏我的博客

    哈希算法

    哈希算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。 通常用于加密和查找 加密使用小例子: 比如我们在php中传递参数a=12,b=’str’,c=14;我们需要进行参数加密,可以使用md5(‘a=12&b=str&c=14’) 很多公司使用这样的算法进行加密

    70880发布于 2018-05-08
  • 来自专栏用户1175783的专栏

    FNV哈希算法

    # FNV哈希算法 参考文档 # FNV版本 FNV哈希分为3个版本:fnv-0(已废弃),FNV-1,FNV-1a # 算法实现 # FNV-0算法公式 hash = 0 for each byte_of_data to be hashed hash = hash * FNV_prime hash = hash ^ octet_of_data return hash # FNV-1算法公式 hash byte_of_data to be hashed hash = hash * FNV_prime hash = hash ^ byte_of_data return hash # FNV-1a算法公式 FNV_prime 还没有看懂,不过这不影响我们实现通用32位,64位的FNV算法 位数 十进制值 32 16777619 64 1099511628211 128 309485009821345068724781371 187852689524938529229181652 437508374669137180409427187 316048473796672026038921768 4476157468082573 # 3.

    1.2K30发布于 2019-09-18
  • 来自专栏花落的技术专栏

    哈希算法揭秘

    所以,我们常听到有人把“散列表”叫作“哈希表”“Hash 表”,把“哈希算法”叫作“Hash 算法”或者“散列算法”。那到底什么是哈希算法呢?哈希算法的定义和原理非常简单,基本上一句话就可以概括了。 但是,要想设计一个优秀的哈希算法并不容易,需要满足的几点要求: 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向哈希算法); 对输入数据非常敏感,哪怕原始数据只修改了一个 Bit,最后得到的哈希值也大不相同 = 425f0d5a917188d2c3c3dc85b5e4f2cb MD5("我今天讲哈希算法") = a1fb91ac128e6aa37fe42c663971ac3d 通过哈希算法得到的哈希值,很难反向推导出原始数据 比如上面的例子中,我们就很难通过哈希值“a1fb91ac128e6aa37fe42c663971ac3d”反推出对应的文本“我今天讲哈希算法”。哈希算法要处理的文本可能是各种各样的。 比如 13 这个数据,存储在编号为 3 这台机器上。但是新加了一台机器中,我们对数据按照 11 取模,原来 13 这个数据就被分配到 2 号这台机器上了。

    81300编辑于 2021-12-07
  • 来自专栏zxctscl个人专栏

    算法哈希

    先固定一个数然后找它前面的数,可以把它前面的数都存在哈希表里面。第一个数前面没有数,就先把这个是放在哈希表里面,然后继续移动到下一个数,继续在哈希表里面找值。 二、算法原理 要保存字符和对应字符出现的值,就用到哈希表。 hash[ch-'a']--; if(hash[ch-'a']<0)return false; } return true; } }; 3. 二、算法原理 只需要固定当前的值,然后把它前面的值放在哈希表里面,判断一下哈希表里面有没有这个数,有就返回true,没有就返回false。 二、算法原理 固定一个值,把它前面一个值的下标和值都放在哈希表里面,当在它前面找到这个数的时候就把下标拿出来,比较差值,大于规定的值,就把这个数继续放在哈希表里面。

    48710编辑于 2024-04-15
  • 来自专栏AI科技时讯

    算法哈希

    可以将算法思想分为两个部分: 向哈希表中插入一个关键字:哈希函数决定该关键字的对应值应该存放到表中的哪个区块,并将对应值存放到该区块中 在哈希表中搜索一个关键字:使用相同的哈希函数从哈希表中查找对应的区块 使用伪随机数序列:假设伪随机数为 9,则得到下一个地址 ,3 对应的地址为空,处理冲突过程结束,记录填入哈希表中序号为 3 的位置。 示例 1: 输入:nums = [1,2,3,1] 输出:true 示例 2: 输入:nums = [1,2,3,4] 输出:false 示例 3: 输入:nums = [1,1,1,3,3,4,3,2,4,2 因此考虑使用3个长度为9的哈希表数组,来表示该数字是否在所在的行,所在的列,所在的方格中出现过。 1,2,3,1,2,3], k = 2 输出:false 提示: 解题思路: 哈希表,可以使用一个哈希表记录元素,key为元素,value为下标。

    3.1K10编辑于 2022-04-18
  • 来自专栏学院君的专栏

    Go 数据结构和算法篇(十四):哈希表、哈希函数、哈希冲突和哈希算法

    补充一张链地址法处理哈希冲突的图示: 链地址法解决哈希冲突图示 三、哈希算法 我们前面分享了哈希表、哈希函数和哈希冲突,哈希算法简单理解就是实现前面提到的哈希函数的算法,用于将任意长度的二进制值串映射为固定长度的二进制值串 执行上述代码,打印结果如下: 哈希算法的一般特性如下: 从哈希值不能反向推导出原始数据(所以哈希算法也叫单向算法,不可逆); 对输入数据非常敏感,哪怕原始数据只修改了一个比特,最后得到的哈希值也大不相同 ; 哈希冲突的概率要很小,对于不同的原始数据,哈希值相同的概率非常小; 哈希算法的执行效率要尽量高效,针对较长的文本,也能快速地计算出哈希值。 3、场景三:数据校验 比如我们从网上下载的很多文件(尤其是 P2P 站点资源),都会包含一个 MD5 值,用于校验下载数据的完整性,避免数据在中途被劫持篡改。 4、场景五:哈希函数 前面我们已经提到,PHP 中的 md5、sha1、hash 等函数都是基于哈希算法计算哈希值。

    2.3K30编辑于 2023-03-03
  • 来自专栏该溜子的专栏

    算法哈希

    Map<参数一,参数二> hash = new HashMap<参数一,参数二> //键值对形式 2:put方法 hash.put(key,value) 以键-值对的形式进行put 3: 一:哈希表 1. 两数之和 心得: 1:暴力枚举可以先固定第一个元素,然后去遍历这个元素前面的。

    34600编辑于 2025-01-25
  • 来自专栏全栈程序员必看

    hash 哈希算法_哈希一致性算法

    文章目录 一、哈希函数 定义 特点 应用 常见哈希算法 二、murmurhash 定义 特点 应用 介绍 三、MurmurHash使用 四、性能测试 MurmurHash:(multiply 一、哈希函数 定义 散列函数(英语:Hash function)又称散列算法哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。 常见哈希算法 MD系列(MD5)、SHA系列(SHA-1)、CRC,甚至JDK hashCode()也是哈希算法的一种。 MurMurHash3 128 位版本哈希值是 128 位的,跟 MD5 一样。128 位的哈希值,在数据量只有千万级别的情况下,基本不用担心碰撞。 3.高混淆。 有趣的是,MurMurHash3 生成 32 位哈希的用时比生成 128 位哈希的用时要长。原因在于MurMurHash3_128 针对现代 x64 平台cpu进行了优化。

    1.4K80编辑于 2022-11-02
  • 来自专栏CSDN博客专家-小蓝枣的博客

    Python 算法基础篇之散列查找算法哈希表、哈希集合、哈希映射

    Python 算法基础篇之散列查找算法哈希表、哈希集合、哈希映射 引言 散列查找算法是一种高效的查找技术,通过散列函数将键映射到数组的索引位置,实现快速的查找、插入和删除操作。 本篇博客将介绍散列查找算法的三种常见应用:哈希表、哈希集合和哈希映射,并通过实例代码演示它们的应用。 ❤️ ❤️ ❤️ 1. 其次,散列查找算法的空间消耗较大,因为需要维护一个数组来存储数据。 2. 哈希表的概念 哈希表是散列查找算法的一种常见应用,它是一种数据结构,用于存储键值对。 链地址法将冲突的键值对存储在同一个索引位置的链表中,而开放地址法则在哈希表中寻找下一个可用的空槽来存储冲突的键值对。 3. 实例3哈希映射 class HashMap: def __init__(self): self.hash_map = {} def put(self, key, value

    76800编辑于 2023-07-24
  • 来自专栏木木玲

    小白入门——哈希算法

    哈希 哈希(Hash)也称为散列,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,这个输出值就是散列值。 使用Hash的查询算法分为两步: ① 用Hash函数将被查找的键转化为数组的一个索引。 理想情况下,不同的键都能转化为不同的索引值。 所示,例如,在示例中插入键 C 会产生一个长度为 3 的键簇( A C S )。这意味着插入 H 需要探测 4 次,因为 H 的Hash值为该键簇的第一个位置。 3/2,未命中所需要的约为 5/2。 参考: Multiplication Method Fibonacci Hashing 《算法 第4版》

    1.4K20发布于 2019-06-15
  • 来自专栏烟草的香味

    哈希算法的用途

    什么是哈希算法 一说到哈希算法, 我瞬间就想到了哈希函数、哈希表, 其实他们并不是一回事. 简单来说, 哈希算法就是将任意长度的字符串通过计算转换为固定长度的字符串, 不对, 不光字符串, 应该说是将任意长度的二进制串转换为固定长度的二进制串, 这个转换的过程就是哈希算法. 当然, 哈希算法不仅仅只有md5这一种, 以用途来分析哈希算法, 就不说哈希算法的原理了, 因为我不会. 1. 可以用哈希算法对文件进行计算, 然后比较哈希值是否相同. 因为存在哈希冲突的情况, 你可以在相同哈希值的文件再进行二进制串比较. 3.哈希表 在哈希表中使用哈希函数已经并不陌生了, 不再赘述. 4.负载均衡 比如说, 现在又多台服务器, 来了一个请求, 如何确定这个请求应该路由到哪个路由器呢

    2K70发布于 2019-07-25
  • 来自专栏全栈程序员必看

    哈希算法 数据结构_实现哈希表构造和查找算法

    一、什么是哈希表 1.概述 哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。 ,也就是元素在l中的下标 2.为什么哈希表查询速度快 理解了哈希表的基本思路,我们也就不难理解为什么哈希表查询效率高了: 由于每个元素都能通过哈希函数直接计算获得地址,所以查找消耗时间非常少。 举个例子: 我们有哈希函数f(n)=n%3,现有元素{1,2,3},我们使用哈希函数分别获得其哈希值,并把哈希值作为下标存入一个数组, 也就是放f(1)=1,f(2)=2,f(3)=0,如果使用传统线性查找 3.哈希冲突 按照上文的例子,数列{1,2,3}通过哈希函数f(n)=n%3可以计算出哈希值,但是如果出现两个元素的哈希值相同就会出现哈希冲突, 比如f(1)和f(4)都会算出1,这个时候显然不可能上上面一样通过一个一维数组直接存储 return; } //继续遍历下一节点 temp = temp.next; } } } 3.

    84620编辑于 2022-09-23
  • 来自专栏全栈程序员必看

    哈希和一致性哈希算法

    哈希 Hash 算法介绍 哈希算法也叫散列算法, 不过英文单词都是 Hash, 简单一句话概括, 就是可以把任意长度的输入信息通过算法变换成固定长度的输出信息, 输出信息也就是哈希值, 通常哈希值的格式是 , 所以Hash算法广泛应用在现代密码体系中•无碰撞 不同的信息进行哈希后得到的值应该是不同的, 但是从理论上来说, 哈希算法其实是有可能发生碰撞的, 输入的信息是无穷的, 而输出的哈希值长度是固定的, 好比要把10个苹果放到9个抽屉里面, 肯定会有一个抽屉装了多个苹果, 只不过哈希算法的碰撞的概率是非常小的, 比如128位的哈希值, 就有2的128次方的空间。 •效率高 在处理比较大的原生值时, 也能能快速的计算出哈希值•无规律 原始输入信息修改一点信息, 得到的哈希值也是大不相同的 哈希算法的实现有很多, 常见的有 MD5, SHA-1, 还有像 C#, Java 上面的一致性Hash算法其实是经典的哈希算法, 当然还有其他的算法, 比如跳跃一致性哈希法, 有兴趣也可以看一下, 以上内容均为个人理解, 如果错误, 可以指出, 希望对您有用!

    59730编辑于 2022-09-18
  • 来自专栏NFT链游的应用

    哈希算法:竞猜逻辑哈希游戏开发的应用

    简单来说,哈希函数就是快速的将1个数值转换为1个哈希值,哈希值是整数,并且要保证,相同的输入得到的哈希值是一样的,如果两个不同的输入得到了相同的结果,这就是哈希值冲突。 也就是说,输入键(key),然后经过哈希函数计算,最后得到哈希值,而哈希值是整数,通过哈希值当做数组下标,得到对应的值。  输入key,经过哈希函数计算fun(key),最后得到y。 按照这种思想,采用哈希技术将值存储在一块连续的存储空间中,这块连续的存储空间称为哈希表或者散列表。关键字对应的存储位置称为哈希地址或者散列地址。  区块链哈希是什么? 每一个区块,包含的内容有数据信息,本区块的哈希值以及上一个区块的哈希值。区块中的数据信息,主要是交易双方的地址与此次交易数量还有交易时间信息等。 而哈希值就是寻找到区块,继而了解到这些区块信息的钥匙。  

    49720编辑于 2022-06-16
  • 来自专栏学习

    【redis】集群 数据分片算法哈希求余、一致性哈希哈希槽分区算法

    每块数据都称为是一个“分片”(上图的每个红框) 哈希求余 借鉴了哈希表的基本思想。 个) 但是随着业务增长,数据变多了,3 个分片就已经不足以保存了,就需要扩容 但是引入新的分片之后,N 就改变了。 ,只要在环上新安排一个分片位置即可 此时,只需要把 0 号分片上的部分数据,搬运给 3 号分片即可。 哈希槽分区算法 redis 真正采用的分片算法 hash_slot crc16(key) % 16384 crc16 是一种 hash 值的算法 16384 是 16 * 1024 => 2^14(16KB 此时这三个分片上的数据就是比较均匀的了 这种算法,本质就是把一致性哈希哈希求余这两种方法结合了一下 上面只是一种可能的分片方式,实际上分片是非常灵活的。

    94410编辑于 2025-03-28
  • 来自专栏加密解密

    哈希函数散列算法

    一、哈希函数/散列算法文档 1.1、哈希函数介绍 哈希函数(Hash function),又称散列函数、散列算法,它是一种不可逆的信息摘要算法,具体实现就是把任意长度的输入信息通过哈希算法变成固定长度的输出信息 1.3、哈希函数的特点 哈希函数没有特定的公式,一般只要符合散列算法的要求即可,只要符合散列算法的要求都可以称之为哈希算法,以下为哈希函数的主要特点: 无论输入的消息有多长,计算出来的哈希值总是固定的; 通常情况下,不同的需求使用不同安全系数的散列算法,常见的安全哈希算法分类为:MD算法、SHA算法、MAC算法。 ,专家建议改用其他哈希算法; MD6算法:还未成为标准。 、SHA-384、SHA-512、SHA-512/224、SHA-512/256等; SHA-3算法:SHA算法分支的最新版本,也是官方推荐使用的安全版本。

    1.4K40编辑于 2023-03-17
  • 来自专栏建帅技术分享

    哈希算法(hash)加密解密

    一、哈希算法(hash)加密解密介绍 哈希,英文叫做 hash。 哈希函数(hash function)可以把 任意长度的数据(字节串)计算出一个为固定长度的结果数据。 有好几种哈希函数,对应不同的算法, 常见有的 MD5, SHA1, SHA224, SHA256, SHA384, SHA512 哈希计算的特点是: 相同的 源数据, 采用 相同的哈希算法, 计算出来的哈希值 一定相同 不管 源数据 有多大,相同的哈希算法,计算出来的哈希值长度 都是一样长的。 不同的源数据 使用同样的哈希算法,可能会产生相同的 哈希值,这被称之为碰撞率(collision rate) 各种哈希算法,计算的结果长度越长,碰撞率越低,通常耗费的计算时长也越长。 比较常见的 对称加密算法有: AES, RC4, DES, 3DES, IDEA 等。 其中安全等级较高的是 AES。

    8.3K20编辑于 2022-08-24
  • 来自专栏机器学习/数据可视化

    算法图解5-哈希

    哈希表 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构 。 ,即k1≠k2,而f(k1)=f(k2),这种现象称为冲突 哈希函数 哈希函数可以把给定的数据转换成固定长度的无规律数值,这个值就是哈希值。 特征 哈希值多用16进制来表示。由于计算机只能处理二进制,也就是或哈希函数在计算机内部进行着某种运算。 确定性:输出的哈希值数据长度不变,不管输入的是多少 唯一性:只要输入的值相同,输出的哈希值必然相同 即时输入的数据完全不同,输出的哈希值可能是相同的,称之为“哈希冲突” 不可反向:不能从哈希值推导出原来的数据 如果桶满了,则使用开放地址法 代表算法 MD5 SHA-1 SHA-2:应用广泛

    78210发布于 2021-03-02
领券