FNV哈希算法

[TOC]

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 = FNV_offset_basis

for each byte_of_data to be hashed

hash = hash * FNV_prime

hash = hash ^ byte_of_data

return hash

FNV-1a算法公式

hash = FNV_offset_basis

for each byte_of_data to be hashed

hash = hash ^ byte_of_data

hash = hash * FNV_prime

return hash

FNV公式参数说明

1. FNV_offset_basis

这个参数的值是固定的,根据不同的位数选择不同的值作为hash的首次填充值

位数 十进制值
32 2166136261
64 14695981039346656037
128 144066263297769815596495629667062367629
256 100029257958052580907070968620625704837092796014241193945225284501741471925557
512 965930312949666949800943540071631046609041874567263789610837432943446265799458
2932197716438449813051892206539805784495328239340083876191928701583869517785
1024 1419779506494762106872207064140321832088062279544193396087847491461758272325
2296732303717722150864096521202355549365628174669108571814760471015076148029
7559698040773201576924585630032153049571501574036444603635505054127112859663
61610267868082893823963790439336411086884584107735010676915

2. FNV_prime

还没有看懂,不过这不影响我们实现通用32位,64位的FNV算法

位数 十进制值
32 16777619
64 1099511628211
128 309485009821345068724781371
256 374144419156711147060143317175368453031918731002211
512 35835915874844867368919076489095108449946327955754392558399825615420669938882
575126094039892345713852759
1024 501645651011311865543459881103527895503076534540479074430301752383111205510814745
150915769222029538271616265187852689524938529229181652437508374669137180409427187
3160484737966720260389217684476157468082573

3. hash

hash后的最总结果

4. byte_of_data

8位无符号整数

5. hashed

要加密的数据,需要转换成byte_of_data[]然后循环^计算

mysql fnv64函数_FNV哈希算法 - osc_tiaoycd5的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. java诸神之战游戏_mj回溯算法 - osc_7bgz0no1的个人空间 - OSCHINA - 中文开源技术交流社区...

    1)js版本 ​ /** * 基本思路: * 回溯法: 先挑选中将,再依次拆接出3个,3个的...直到结束,那么说明当前可以胡牌 */ let mahjong = [ "1T", ...

  2. mysql 重做日志 镜像_mysql重做日志 - osc_vr7hvjd2的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.重做日志(redo log) 1.作用 确保事务的持久性. 防止在发生故障的时间点,尚有脏页未写入磁盘,在重启mysql服务的时候,根据redo log进行重做,从而达到事务的持久性这一特性. 2 ...

  3. java实现近邻聚类算法,近邻传播聚类算法 - osc_t74tdxrl的个人空间 - OSCHINA - 中文开源技术交流社区...

    近邻传播聚类算法 1.算法简介 AP(Affinity Propagation)通常被翻译为近邻传播算法或者仿射传播算法,是在2007年的Science杂志上提出的一种新的聚类算法.AP算法的基本思想 ...

  4. 人工鱼群算法python代码_人工鱼群算法python_鱼群算法 - Brillou的个人空间 - OSCHINA - 中文开源技术交流社区......

    本算法是参照李晓磊博士的论文实现的,详细的算法原理可阅读<一种新型的智能优化方法_人工鱼群算法_李晓磊> 算法基于鱼群的生存行为:在一片水域中,鱼存在的数目最多的地方就是本水域中富含营养物 ...

  5. 人工鱼群算法python_鱼群算法 - Brillou的个人空间 - OSCHINA - 中文开源技术交流社区...

    本算法是参照李晓磊博士的论文实现的,详细的算法原理可阅读<一种新型的智能优化方法_人工鱼群算法_李晓磊> 算法基于鱼群的生存行为:在一片水域中,鱼存在的数目最多的地方就是本水域中富含营养物 ...

  6. MySQL中购买的语句,mysql操作语句 - 买灰机自己开的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.对数据库的CRUD 1.创建数据库:create database  数据库名[character set 字符集] 2.查询所有数据库:show databases 3.查询数据库定义结构:sh ...

  7. java 投票算法_摩尔投票算法 - woshixin的个人空间 - OSCHINA - 中文开源技术交流社区...

    摩尔投票算法(Moore majority vote algorithm) 这个在wiki的介绍在https://en.wikipedia.org/wiki/Boyer%E2%80%93Moore_m ...

  8. mysql 读写分离 c_MYSQL的读写分离 - osc_9u3csz5k的个人空间 - OSCHINA - 中文开源技术交流社区...

    数据量增多,单机的数据库不足以支撑业务,需要用到数据库集群.而读写分离,就是将数据库的读和写分离,对应到数据库一般就是主从数据库,一主一从或者一主多从:业务服务器把数据写到主数据库中,读操作都去从库读 ...

  9. MySQL如何创建沙箱,沙箱环境搭建 - osc_y8w65yuq的个人空间 - OSCHINA - 中文开源技术交流社区...

    [toc] 测试环境搭建 沙箱环境: -------测试环境搭建 基础配置: # 1.在沙箱环境下实名认证:https://openhome.alipay.com/platform/appDaily. ...

最新文章

  1. NNVM Compiler,AI框架的开放式编译器
  2. 【转】android电池(四):电池 电量计(MAX17040)驱动分析篇
  3. Swift 3.0封装 URLSession 的GET/SET方法代替 Alamofire
  4. js---25桥模式
  5. HashMap测试程序2
  6. Redhat Enterprise 6 下安装Oracle 11g报错
  7. 从零开始编写深度学习库(四)Eigen::Tensor学习使用及代码重构
  8. jQuery LigerUI 使用教程入门篇
  9. k8s集群资源监控-监控指标和方案---K8S_Google工作笔记0052
  10. 蓝桥杯 ADV-227 算法提高 11-1实现strcmp函数
  11. c++ vector 使用注意事项
  12. java 类 赋值_java类怎样赋值
  13. sphinx系列之中文分词LibMMSeg安装(三)
  14. w25qxx SPI读取数据出来为全FF
  15. elang 游戏 生成全局id
  16. 【Web技术】929- 前端海报生成的不同方案和优劣
  17. linux修改ipaddr,并保存
  18. 计算机视觉人脸检测与识别
  19. 应用Win7优化大师,备份与还原系统激活文件。
  20. Simulink代码生成:CAN Pack模块及其代码

热门文章

  1. 将汉字转化为拼音,正则表达式和得到汉字的Unicode编码
  2. 计算机主机清洁方法,电脑主机除尘清洁板卡维护方法及注意事项 - 主板知识
  3. 企业为什么需要信息化?
  4. 关于用户名登录的问题
  5. 新一代科学教育标准到底是什么?为什么开展 STEM 教育?
  6. PHP exif 介绍
  7. 6s测试信号软件,主流智能机信号强度测试 iPhone6s表现差
  8. 8款电子邮件客户端比较【转】
  9. phpcms选择文件无法加载插件怎么办_win7系统下浏览器显示无法加载插件如何解决...
  10. java版tp指令,VAG TP 2.0完整的AT命令列表