fnv-plus 生成 Hash 哈希算法的 Npm 包

FNV-1a 散列算法通常被简单地称为 FNV,它在 n 位散列空间中散布散列,具有很好的分散性,而且速度非常快。

fnv-plus 生成 Hash 哈希算法的 Npm 包

使用此模块为 JavaScript 字符串或对象生成唯一的散列/校验和值。

注:FNV-1a 算法甚至不适合作为密码伪随机生成器,也不应该被用来保护任何事物的安全。它的确是唯一的,但不是随机的。

为什么使用 FNV+?

  • 这是最快为 Node.js 提供的 FNV 实现(谢谢 desudesutalk)。参见 Benchmarks.
  • 它是唯一能够为大于 32 位的密钥空间生成 FNV 散列的 NPM 模块。
  • fnv-plus 经过了很好的测试。许多其他的 FNV 实现没有提供任何单元测试来证明它们的工作能力和性能。
  • fnv-plus 实现了 FNV-1a 的 52 位版本,它提供了更大的哈希空间,同时仍然使用 Javascript 的 53 位整数空间。

安装

$ npm install fnv-plus --save

使用

var fnv = require('fnv-plus'),

astring = 'hello world',

ahash52 = fnv.hash(astring), // 52-bit hash by default

ahash64 = fnv.hash(astring, 64); // 64-bit hash specified

console.log(ahash52.hex() == 'a65e7023cd59e'); //true

console.log(ahash52.str() == 'stglysbf6m'); //true

console.log(ahash52.dec() == '2926792616498590'); //true

console.log(ahash64.hex() == '779a65e7023cd2e7'); //true

console.log(ahash64.str() == '1th7cxzlyc0dj'); //true

console.log(ahash64.dec() == '8618312879776256743'); //true

// fast variants

console.log(fnv.fast1a32hex(astring) == 'd58b3fa7'); //true

console.log(fnv.fast1a52hex(astring) == 'a65e7023cd59e'); //true

fnv.seed('foobar testseed');

console.log(fnv.hash(astring, 64).hex() == ahash64.hex()); // false

// ^^ because the default seed is not 'foobar testseed'

API

fnv.hash(string, bitlength)

  • 使用给定的位长散列字符串(默认为52)
  • 返回 FnvHash 对象

fnv.seed(string)

  • 种子算法产生不同的值。用不同的种子散列相同的值很可能会产生不同的结果。在你的种子可以是随机的范围内,它可以作为随机性的来源,但仍然是。密码PRG(伪随机发生器)的替代品。
  • 默认种子是 chongo <Landon Curt Noll> /\>./\\

fnv.useUTF8(bool)

  • 控制UTF-8对哈希函数的感知
  • 默认值是 false

FnvHash.str()

以ascii字符串的形式返回哈希值。

FnvHash.hex()

以十六进制字符串的形式返回哈希值。

FnvHash.dec()

以十进制字符串的形式返回哈希值。

快速变体

这个函数运行得更快,因为它们没有 LIB-间接费用,参见 Benchmarks 获取更多信息。他们总是计算 1a 版本的散列,并且总是使用默认的种子。直接返回哈希值(不返回 FnvHash 对象)。

fnv.fast1a32(string)

  • 计算fnv-1a 32位散列
  • 返回int

fnv.fast1a32hex(string)

  • 计算fnv-1a 32位散列
  • 返回十六进制字符串

fnv.fast1a52(string)

  • 计算fnv-1a 52位散列
  • 返回int

fnv.fast1a52hex(string)

  • 计算fnv-1a 52位散列
  • 返回十六进制字符串

fnv.fast1a64(string)

  • 计算fnv-1a 64位散列
  • 返回十六进制字符串

fnv.fast1a32utf(string)

  • 计算fnv-1a 32位散列
  • 处理UTF-8字符串
  • 返回int

fnv.fast1a32hexutf(string)

  • 计算fnv-1a 32位散列
  • 处理UTF-8字符串
  • 返回十六进制字符串

fnv.fast1a52utf(string)

  • 计算fnv-1a 52位散列
  • 处理UTF-8字符串
  • 返回int

fnv.fast1a52hexutf(string)

  • 计算fnv-1a 52位散列
  • 处理UTF-8字符串
  • 返回十六进制字符串

fnv.fast1a64utf(string)

  • 计算fnv-1a 64位散列
  • 处理UTF-8字符串
  • 返回十六进制字符串

相关链接

  • Github 地址:https://github.com/tjwebb/fnv-plus

以上是 fnv-plus 生成 Hash 哈希算法的 Npm 包 的全部内容, 来源链接: utcz.com/p/232547.html

回到顶部