首页 > 其他分享 >非加密哈希函数库-SpookyHash

非加密哈希函数库-SpookyHash

时间:2024-10-16 19:23:06浏览次数:7  
标签:hash 函数库 SpookyHash 哈希 128 加密 bit

地址:

https://burtleburtle.net/bob/hash/spooky.html


image-20241016154359545


SpookyHash is a public domain noncryptographic hash function producing well-distributed 128-bit hash values for byte arrays of any length. It can produce 64-bit and 32-bit hash values too, at the same speed, just use the bottom n bits. The C++ reference implementation is specific to 64-bit x86 platforms, in particular it assumes the processor is little endian. Long keys hash in 3 bytes per cycle, short keys take about 1 byte per cycle, and there is a 30 cycle startup cost. Keys can be supplied in fragments. The function allows a 128-bit seed. It's named SpookyHash because it was released on Halloween.


SpookyHash 概述

SpookyHash 是一种公共领域的非加密哈希函数,旨在快速且良好地分布哈希值。以下是 SpookyHash 的一些关键特性和特点:

关键特性:

  • 哈希输出大小
    • 生成 128 位的哈希值。
    • 还可以生成 64 位和 32 位的哈希值,只需使用 128 位输出的低 n 位。
  • 性能
    • 长键的哈希速度约为每个周期 3 字节。
    • 短键的哈希速度约为每个周期 1 字节。
    • 哈希过程有 30 周期的初始启动成本。
  • 输入灵活性
    • 接受任意长度的字节数组,并可以处理以片段方式提供的键。
  • 种子值
    • 允许使用 128 位的种子生成哈希,这使得相同输入可以产生不同的输出。
  • 平台特定性
    • C++ 的参考实现针对 64 位 x86 平台进行了优化,并假设为小端字节序。

命名:

  • "SpookyHash" 的名称源于其发布的日期,恰好在万圣节。

用例:

SpookyHash 通常用于速度至关重要的应用程序,并且加密安全性不是主要关注点。适用于以下任务:

  • 进行快速查找的数据哈希。
  • 创建数据完整性的校验和。
  • 用于软件中的非加密目的,在这些场景中,哈希冲突是可以接受的。

结论:

SpookyHash 在速度和有效哈希分布之间提供了良好的平衡,使其成为许多非加密应用程序的实用选择。



标签:hash,函数库,SpookyHash,哈希,128,加密,bit
From: https://www.cnblogs.com/xyz/p/18470590

相关文章

  • 【C++】精妙的哈希算法
    ......
  • C#哈希查找算法
    前言哈希查找算法是一种高效的查找算法,通过将键值映射到哈希表中的位置来实现快速访问。在C#中,哈希查找通常通过哈希表(Hashtable)或字典(Dictionary)来实现。实现原理哈希函数:将键值转换成哈希值,该哈希值决定了键值在哈希表中的位置。哈希表:一种数据结构,用于存储键值对。哈希表中的位......
  • C#哈希查找算法
    前言哈希查找算法是一种高效的查找算法,通过将键值映射到哈希表中的位置来实现快速访问。在C#中,哈希查找通常通过哈希表(Hashtable)或字典(Dictionary)来实现。实现原理哈希函数:将键值转换成哈希值,该哈希值决定了键值在哈希表中的位置。哈希表:一种数据结构,用于存储键值对。哈希表......
  • 字符串哈希
    字符串哈希哈希函数的基本性质:1)输入参数的可能性是无限的,输出的值范围相对有限2)输入同样的样本一定得到同样的输出值,也就是哈希函数没有任何随机机制3)输入不同的样本也可能得到同样的输出值,此时叫哈希碰撞4)输入大量不同的样本,得到的大量输出值,会几乎均匀的分布在整个输出域上......
  • 代码随想录算法训练营第八天(1)|哈希表理论基础
    文档讲解:代码随想录难度:有一点哈希表理论基础哈希表首先什么是哈希表,哈希表(英文名字为Hashtable,国内也有一些算法书籍翻译为散列表,大家看到这两个名称知道都是指hashtable就可以了)。哈希表是根据关键码的值而直接进行访问的数据结构。这么官方的解释可能有点懵,其实......
  • [CTSC2014] 企鹅 QQ——哈希
    [CTSC2014]企鹅QQ题目背景PenguinQQ是中国最大、最具影响力的SNS(SocialNetworkingServices)网站,以实名制为基础,为用户提供日志、群、即时通讯、相册、集市等丰富强大的互联网功能体验,满足用户对社交、资讯、娱乐、交易等多方面的需求。题目描述小Q是PenguinQQ网站的......
  • CF1746F Kazaee(随机化哈希)
    真的做不来这种题怎么办/ll题意给定\(n\)个数,\(q\)次操作:单点修改一个数的值。查询区间内所有数的出现次数是否均为\(k\)的倍数。\(n,q\le3\times10^5\)。分析一眼看上去只能带修莫队,而且常数还巨大无比。这种随机化哈希题一般是考虑一个必要不充分条件,但是充分的......
  • lake3哈希算法的介绍、特点、原理与Blake3.Net的特点
    1.Blake3的介绍与特点哈希函数专为文件完整性验证等应用而设计,加密数字签名的消息认证和数据生成。Blake3不是为散列密码而设计的,因为它旨在尽可能快地计算散列(对于密码,建议使用慢散列和escrypt、bcrypt、scrypt或Argon2函数)。所讨论的散列函数对正在处理的数据大小不敏感,并......
  • 哈希
    哈希常用于需要\(O(1)\)比较两个\(O(n)\)的东西。可以采用双模数减少冲突概率。哈希冲突率的粗略计算:可以看做\(\frac{n}{\prodmod}\)。字符串哈希常用于需要\(O(1)\)比较两个字符串,可以代替一些字符串匹配的KMP题目。以及可以使用哈希+二分的技巧\(\log\)的时......
  • SMB签名是一种通过数字签名技术保障数据在网络传输过程中的完整性和来源验证的机制。
    SMB签名是ServerMessageBlock(SMB)协议中的一种安全机制,旨在确保数据的完整性和身份验证。1.什么是SMB签名?SMB签名是一种通过数字签名技术保障数据在网络传输过程中的完整性和来源验证的机制。它通过对数据进行哈希处理,并附加一个签名,确保接收方能够确认收到的数据没有被篡改。......