前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FNV哈希算法

FNV哈希算法

作者头像
用户1175783
发布2019-09-18 10:05:09
1K0
发布2019-09-18 10:05:09
举报
文章被收录于专栏:用户1175783的专栏

# FNV哈希算法

参考文档

# FNV版本

FNV哈希分为3个版本:fnv-0(已废弃),FNV-1,FNV-1a

# 算法实现

# FNV-0算法公式
代码语言:javascript
复制
hash = 0
   for each byte_of_data to be hashed
   		hash = hash * FNV_prime
   		hash = hash ^ octet_of_data
return hash
# FNV-1算法公式
代码语言:javascript
复制
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算法公式

代码语言:javascript
复制
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

965930312949666949800943540071631046609 041874567263789610837432943446265799458 293219771643844981305189220653980578449 5328239340083876191928701583869517785

1024

14197795064947621068722070641403218320 88062279544193396087847491461758272325 22967323037177221508640965212023555493 65628174669108571814760471015076148029 75596980407732015769245856300321530495 71501574036444603635505054127112859663 61610267868082893823963790439336411086 884584107735010676915

# 2. FNV_prime

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

位数

十进制值

32

16777619

64

1099511628211

128

309485009821345068724781371

256

374144419156711147060143317175368453031918731002211

512

358359158748448673689190764 890951084499463279557543925 583998256154206699388825751 26094039892345713852759

1024

501645651011311865543459881 103527895503076534540479074 430301752383111205510814745 150915769222029538271616265 187852689524938529229181652 437508374669137180409427187 316048473796672026038921768 4476157468082573

# 3. hash

hash后的最总结果

# 4. byte_of_data

8位无符号整数

# 5. hashed

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • # FNV哈希算法
    • # FNV版本
      • # 算法实现
        • # FNV-0算法公式
        • # FNV-1算法公式
      • # FNV-1a算法公式
        • # FNV公式参数说明
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档