跳到主要内容

5. FNV 常量

中文导读: 本节对应 RFC 9923 的 5. FNV 常量 部分, 对应文档标题为 RFC 9923 - The FNV Non-Cryptographic Hash Algorithm. 下方若包含英文 RFC 原文, 注册表名称, 字段名, 算法名, 对象标识符, 媒体类型, 邮箱地址, URL, 代码, ABNF, ASN.1, YANG, JSON, XML, 测试向量或参考文献条目, 均按规范原样保留, 因为这些内容需要与 RFC 文本, IANA 注册表, 实现代码或验证工具逐字一致. 中文段落用于说明本节的作用, 阅读重点和实现含义, 不改变任何协议语义或注册值.

本页包含机器可读或接近机器可读的规范材料. 对 ASN.1, YANG, JSON Schema, XML Schema, 伪代码, 注册模板, 常量表和算法标识符, 翻译时必须保留关键字, 类型名, OID, namespace, 枚举值, 字段名和语法结构. 实现者应把这些块视为生成代码, 配置模型, 验证输入或一致性测试的依据.

FNV Primes 如下:


+==========================================================+
| Size FNV Prime = Expression |
+==========================================================+
| = Decimal |
+==========================================================+
| = Hexadecimal |
+==========================================================+
| 32-bit FNV_Prime = 2^24 + 2^8 + 0x93 |
+----------------------------------------------------------+
| = 16,777,619 |
+----------------------------------------------------------+
| = 0x01000193 |
+----------------------------------------------------------+
| 64-bit FNV_Prime = 2^40 + 2^8 + 0xB3 |
+----------------------------------------------------------+
| = 1,099,511,628,211 |
+----------------------------------------------------------+
| = 0x00000100 000001B3 |
+----------------------------------------------------------+
| 128-bit FNV_Prime = 2^88 + 2^8 + 0x3B |
+----------------------------------------------------------+
| = 309,485,009,821,345,068,724,781,371 |
+----------------------------------------------------------+
| = 0x00000000 01000000 00000000 0000013B |
+----------------------------------------------------------+
| 256-bit FNV_Prime = 2^168 + 2^8 + 0x63 |
+----------------------------------------------------------+
| = 374,144,419,156,711,147,060,143,317,175,368,453,031, |
| 918,731,002,211 |
+----------------------------------------------------------+
| = 0x0000000000000000 0000010000000000 0000000000000000 |
| 0000000000000163 |
+----------------------------------------------------------+
| 512-bit FNV_Prime = 2^344 + 2^8 + 0x57 |
+----------------------------------------------------------+
| = 35,835,915,874,844,867,368,919,076,489,095,108,449, |
| 946,327,955,754,392,558,399,825,615,420,669,938,882,575, |
| 126,094,039,892,345,713,852,759 |
+----------------------------------------------------------+
| = 0x0000000000000000 0000000000000000 0000000001000000 |
| 0000000000000000 0000000000000000 0000000000000000 |
| 0000000000000000 0000000000000157 |
+----------------------------------------------------------+
| 1024-bit FNV_Prime = 2^680 + 2^8 + 0x8D |
+----------------------------------------------------------+
| = 5,016,456,510,113,118,655,434,598,811,035,278,955,030, |
| 765,345,404,790,744,303,017,523,831,112,055,108,147,451, |
| 509,157,692,220,295,382,716,162,651,878,526,895,249,385, |
| 292,291,816,524,375,083,746,691,371,804,094,271,873,160, |
| 484,737,966,720,260,389,217,684,476,157,468,082,573 |
+----------------------------------------------------------+
| = 0x0000000000000000 0000000000000000 0000000000000000 |
| 0000000000000000 0000000000000000 0000010000000000 |
| 0000000000000000 0000000000000000 0000000000000000 |
| 0000000000000000 0000000000000000 0000000000000000 |
| 0000000000000000 0000000000000000 0000000000000000 |
| 000000000000018D |
+----------------------------------------------------------+

Table 1

FNV offset_basis 值如下:

   +===================================================================+
| Size offset_basis |
+===================================================================+
| = Decimal |
+===================================================================+
| = Hexadecimal |
+===================================================================+
| 32-bit offset_basis |
+-------------------------------------------------------------------+
| = 2,166,136,261 |
+-------------------------------------------------------------------+
| = 0x811C9DC5 |
+-------------------------------------------------------------------+
| 64-bit offset_basis |
+-------------------------------------------------------------------+
| = 14,695,981,039,346,656,037 |
+-------------------------------------------------------------------+
| = 0xCBF29CE4 84222325 |
+-------------------------------------------------------------------+
| 128-bit offset_basis |
+-------------------------------------------------------------------+
| = 144,066,263,297,769,815,596,495,629,667,062,367,629 |
+-------------------------------------------------------------------+
| = 0x6C62272E 07BB0142 62B82175 6295C58D |
+-------------------------------------------------------------------+
| 256-bit offset_basis |
+-------------------------------------------------------------------+
| = 100,029,257,958,052,580,907,070,968,620,625,704,837, |
| 092,796,014,241,193,945,225,284,501,741,471,925,557 |
+-------------------------------------------------------------------+
| = 0xDD268DBCAAC55036 2D98C384C4E576CC C8B1536847B6BBB3 |
| 1023B4C8CAEE0535 |
+-------------------------------------------------------------------+
| 512-bit offset_basis |
+-------------------------------------------------------------------+
| = 9,659,303,129,496,669,498,009,435,400,716,310,466,090, |
| 418,745,672,637,896,108,374,329,434,462,657,994,582,932, |
| 197,716,438,449,813,051,892,206,539,805,784,495,328,239, |
| 340,083,876,191,928,701,583,869,517,785 |
+-------------------------------------------------------------------+
| = 0xB86DB0B1171F4416 DCA1E50F309990AC AC87D059C9000000 |
| 0000000000000D21 E948F68A34C192F6 2EA79BC942DBE7CE |
| 182036415F56E34B AC982AAC4AFE9FD9 |
+-------------------------------------------------------------------+
| 1024-bit offset_basis |
+-------------------------------------------------------------------+
| = 14,197,795,064,947,621,068,722,070,641,403,218,320, |
| 880,622,795,441,933,960,878,474,914,617,582,723,252,296, |
| 732,303,717,722,150,864,096,521,202,355,549,365,628,174, |
| 669,108,571,814,760,471,015,076,148,029,755,969,804,077, |
| 320,157,692,458,563,003,215,304,957,150,157,403,644,460, |
| 363,550,505,412,711,285,966,361,610,267,868,082,893,823, |
| 963,790,439,336,411,086,884,584,107,735,010,676,915 |
+-------------------------------------------------------------------+
| = 0x0000000000000000 005F7A76758ECC4D 32E56D5A591028B7 |
| 4B29FC4223FDADA1 6C3BF34EDA3674DA 9A21D90000000000 |
| 0000000000000000 0000000000000000 0000000000000000 |
| 0000000000000000 0000000000000000 000000000004C6D7 |
| EB6E73802734510A 555F256CC005AE55 6BDE8CC9C6A93B21 |
| AFF4B16C71EE90B3 |
+-------------------------------------------------------------------+

Table 2