博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FNV哈希算法
阅读量:6227 次
发布时间:2019-06-21

本文共 1761 字,大约阅读时间需要 5 分钟。

目录

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_datareturn hash

FNV-1算法公式

hash = FNV_offset_basis   for each byte_of_data to be hashed        hash = hash * FNV_prime        hash = hash ^ byte_of_datareturn hash

FNV-1a算法公式

hash = FNV_offset_basis   for each byte_of_data to be hashed        hash = hash ^ byte_of_data        hash = hash * FNV_primereturn 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[]然后循环^计算

转载地址:http://aqnna.baihongyu.com/

你可能感兴趣的文章
代写初中语文作文|代写初中语文作文技巧分享
查看>>
linux字符设备文件的打开操作
查看>>
Servlet介绍以及简单实例
查看>>
[js高手之路] 跟GhostWu一起封装一个字符串工具库-架构篇(1)
查看>>
Java.ftp上传下载
查看>>
【Node.js】4.从一个例子切入Node js的规范
查看>>
实施微服务架构的关键技术
查看>>
“流”的思维—Workflowy
查看>>
Day19 网络编程
查看>>
.NET平台MongoDB下使用JobStore存储Quartz.Net的Job,Trigger数据
查看>>
Java多线程编程—锁优化
查看>>
python文本 字符与字符值转换
查看>>
Linux虚拟化技术KVM、QEMU与libvirt的关系(转)
查看>>
Ceph分布式存储-原理介绍及简单部署
查看>>
MYSQL数据库设计规范与原则
查看>>
UWP: 实现 UWP 应用自启动
查看>>
Windows内核之进程的终止和子进程
查看>>
Vivado+FPGA:如何使用Debug Cores(ILA)在线调试(烧录到flash里可以直接启动)
查看>>
[Preference] How to avoid Forced Synchronous Layout or FSL to improve site preference
查看>>
【laravel5.4】php artisan migrate报错:Specified key was too long; max key length is 767 bytes
查看>>