地址:

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

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

非加密哈希函数库-SpookyHash的更多相关文章

  1. djb2:一个产生简单的随机分布的哈希函数

    目录 LCG算法 示例代码 djb2 示例代码 为什么选择参数33和 33 was chosen because: 5381 was chosen because 哈希选择参考 LCG算法 djb2与 ...

  2. 为开发者准备的 Android 函数库(2016 年版)

    转载:http://www.androidchina.net/5922.html第三方函数库(译者注:包括第三方提供的 SDK,开源函数库)以惊人的方式助力着 Android 开发,借助这些其他开发人 ...

  3. DSAPI多功能.NET函数库组件

    DSAPI.dll不定期更新,增加功能,故无法每次都发到网上,如果需要获得最新版DSAPI.dll的,请到QQ群:419130936群共享里下载. 简介     dsapi.dll是一款基于.net平 ...

  4. 开发常用的 Android 函数库

    第三方函数库(译者注:包括第三方提供的 SDK,开源函数库)以惊人的方式助力着 Android 开发,借助这些其他开发人员辛勤工作的成果,我们开发起来更轻松和快捷.目前存在成千上万的函数库,如何选择正 ...

  5. Android 为开发者准备的最佳 Android 函数库(2016 年版)

    本文是翻译自 CloudRAIL 的官方博客(https://cloudrail.com/best-android-libraries-for-developers/),本文中分享的 Android ...

  6. 逆向 ctype.h 函数库 isalnum、iscntrl、islower、isxdigit、tolower 函数

    0x01 isalnum 函数 函数原型:int isalnum(int c); 函数功能:检查所传的字符是否是字母和数字 动态链接库:ucrtbase.dll C\C++ 实现: #define _ ...

  7. 安卓开发经验分享:资源、UI、函数库、测试、构建一个都不能少(转)

    除了高超的武艺,每位黑忍者还需要装备最好的武器.在软件开发的世界里,好的工具能让我们的生活变得更轻松,在更短的时间里写出更棒的代码. 时光回到2008年,那时安卓还很年轻.只有几个相关的博客和谷歌官方 ...

  8. Lua中的常用函数库汇总

    lua库函数 这些函数都是Lua编程语言的一部分, 点击这里了解更多. assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调 ...

  9. PHP函数库(other)

    PHP函数库(other) Session函数: session_abort — Discard session array changes and finish session session_ab ...

  10. 基于DES算法加密的防撞库密码系统项目总结

    项目内容:基于DES算法加密的防撞库密码系统 小组名:zqhzkzkj 目标:1.对用户输入的8位字符进行DES加密,要求用户输入8位密钥 2.对于不同的网站,不同的用户名生成不同的密码 小组成员:周 ...

随机推荐

  1. 有没有一个适合初学者学习的基于linux的嵌入式综合项目?

    一.前言 很多粉丝问我,有没有一个适合初学者学习的嵌入式的Linux的项目? 我之前陆陆续续写过一些适合新手的小项目: <从0写一个<电话号码管理系统>的C入门项目[适合初学者]&g ...

  2. 如何用C语言操作sqlite3,一文搞懂

    sqlite3编程接口非常多,对于初学者来说,我们暂时只需要掌握常用的几个函数,其他函数自然就知道如何使用了. 数据库 本篇假设数据库为my.db,有数据表student. no name score ...

  3. Flutter调试debug或者打包release帧率只有60的原因

    问题描述 最近发现Flutter中引入像素较大的静态图片或者字体导致调试或者打包之后在高刷手机上帧率只有60的问题. 测试设备为小米13,可在开发者选项中直接打开帧率显示, 也可使用statsfl插件 ...

  4. Win11减少C盘占用及清爽系统配置教程

    Win11减少C盘占用及清爽系统配置教程 你是否有过C盘爆满而不得不重装系统的经历?你是否有过因为C盘爆满而不得不不断的拓展空间的无奈?你是否有过已经将软件安装在D盘但C盘的空间还是在日益变满的痛苦? ...

  5. Linux 磁盘分区和格式化

    分区 常用命令行工具: fdisk:适用于 MBR 分区表 gdisk:适用于 GPT 分区表 parted:适用于 MBR 和 GPT 分区表,功能更强大.它还有一个 GUI 版本,名为 gpart ...

  6. 在 Python 中通过读取 .env 文件获得环境变量

    在编写 Python 脚本时,我们会使用一些私密数据,如调用 API 时使用的 token.为了避免隐私泄露,这些私密数据一般不直接写入脚本文件中.而是写入一个文件,并通过读取文件的方式获取私密数据内 ...

  7. Kubernetes-11:ConfigMap介绍及演示

    ConfigMap存在的意义 ConfigMap 功能在 Kubernetes1.2版本引入,许多应用程序会从配置文件.命令行参数或环境变量中读取配置信息,ConfigMap API 给我们提供了向容 ...

  8. 扩展KMP (ex_KMP)

    一些约定: 字符串下标从1开始 s[1,i]表示S的第一个到第i个字符组成的字符串 解决的题型: 给你两个字符串A,B(A.size()=n,B.size()=m),求p数组 p[i]表示最大的len ...

  9. WPF性能优化之UI虚拟化

    @ 目录 前言 一.VirtualizingStackPanel 1.1 虚拟化功能介绍 1.在Window中添加一个ListBox控件. 2.在设计视图中用鼠标选中ListBox控件并右健依次单击& ...

  10. .NET 8 微软免费开源的 Blazor UI 组件库

    前言 .NET 8 的发布,微软推出了官方免费且开源的 Blazor UI 组件库 -- Fluent UI Blazor. 组件库提供了Web应用程序所需的工具,确保应用程序能够与 Microsof ...