hutool.core.util.hasher

哈希工具类

Module Contents

Classes

HashUtil

哈希工具类,对应 Java cn.hutool.core.util.HashUtil

API

class hutool.core.util.hasher.HashUtil

哈希工具类,对应 Java cn.hutool.core.util.HashUtil

提供多种非加密哈希算法的纯Python实现。 所有算法结果通过 & 0xFFFFFFFF 限制为32位无符号整数。

static fnv1(data: bytes) int

FNV-1 哈希算法

参数:

data – 字节数组

返回:

32位哈希值

static fnv1a(data: bytes) int

FNV-1a 哈希算法(与FNV-1的区别在于异或和乘法的顺序相反)

参数:

data – 字节数组

返回:

32位哈希值

static bkdr_hash(string: str) int

BKDR 哈希算法

由Brian Kernighan与Dennis Ritchie提出,种子数为131。

参数:

string – 输入字符串

返回:

32位哈希值

static ap_hash(string: str) int

AP 哈希算法

由Arash Partow提出,具有很好的分布效果。 初始值为 0。

参数:

string – 输入字符串

返回:

32位哈希值

static djb_hash(string: str) int

DJB 哈希算法

由Daniel J. Bernstein提出,使用初始值5381。

参数:

string – 输入字符串

返回:

32位哈希值

static js_hash(string: str) int

JS 哈希算法

Justin Sobel提出的哈希算法。

参数:

string – 输入字符串

返回:

32位哈希值

static rs_hash(string: str) int

RS 哈希算法

Robert Sedgwicks提出的哈希算法。

参数:

string – 输入字符串

返回:

32位哈希值

static sdbm_hash(string: str) int

SDBM 哈希算法

开源数据库SDBM使用的哈希算法。

参数:

string – 输入字符串

返回:

32位哈希值

static elf_hash(string: str) int

ELF 哈希算法

UNIX系统ELF文件格式中使用的哈希算法。

参数:

string – 输入字符串

返回:

32位哈希值

static dek_hash(string: str) int

DEK 哈希算法

由Donald E. Knuth提出。

参数:

string – 输入字符串

返回:

32位哈希值

static bp_hash(string: str) int

BP 哈希算法

参数:

string – 输入字符串

返回:

32位哈希值

static pjw_hash(string: str) int

PJW 哈希算法

Peter J. Weinberger提出的哈希算法,常用于编译器符号表。

参数:

string – 输入字符串

返回:

32位哈希值

static java_hash_code(string: str) int

Java String.hashCode() 兼容实现

使用 Java 的 s*31+c 算法,结果与Java完全一致。 Java的hashCode使用有符号32位整数,此方法返回无符号表示。

算法: h = h * 31 + char[i]

参数:

string – 输入字符串

返回:

32位哈希值(无符号表示,范围与Java有符号int一一对应)

static additive_hash(key: str, prime: int) int

累加哈希算法。

参数:
  • key – 输入字符串

  • prime – 质数

返回:

哈希值

static rotating_hash(key: str, prime: int) int

旋转哈希算法。

参数:
  • key – 输入字符串

  • prime – 质数

返回:

哈希值

static one_by_one_hash(key: str) int

一次一个哈希算法。

参数:

key – 输入字符串

返回:

32位哈希值

static bernstein_hash(key: str) int

Bernstein 哈希算法。

参数:

key – 输入字符串

返回:

哈希值

static universal_hash(key: str, mask: int, tab: list) int

通用哈希算法(Universal Hashing)。

参数:
  • key – 输入字符串

  • mask – 掩码

  • tab – 查找表(长度至少为 len(key) * 8)

返回:

哈希值

static zobrist_hash(key: str, mask: int, tab: list) int

Zobrist 哈希算法。

参数:
  • key – 输入字符串

  • mask – 掩码

  • tab – 二维查找表 tab[i][ord(ch)]

返回:

哈希值

static int_hash(key: int) int

Thomas Wang 32 位整数哈希算法。

参数:

key – 整数

返回:

32位哈希值

static tianl_hash(s: str) int

TianL 哈希算法。

参数:

s – 输入字符串

返回:

哈希值

static mix_hash(s: str) int

混合哈希算法,输出 64 位值。

高 32 位为 Java hashCode,低 32 位为 FNV-1 哈希。

参数:

s – 输入字符串

返回:

64位哈希值

static murmur32(data: bytes, seed: int = 0) int

MurmurHash3 32 位算法。

参数:
  • data – 字节数组

  • seed – 种子,默认 0

返回:

32位哈希值

static _murmur32_impl(data: bytes, seed: int = 0) int

MurmurHash3 32 位纯 Python 实现。

static murmur64(data: bytes, seed: int = 0) int

MurmurHash 64 位算法。

参数:
  • data – 字节数组

  • seed – 种子,默认 0

返回:

64位哈希值

static _murmur64_impl(data: bytes, seed: int = 0) int

MurmurHash2 64 位纯 Python 实现。

static murmur128(data: bytes, seed: int = 0) tuple

MurmurHash3 128 位算法。

参数:
  • data – 字节数组

  • seed – 种子,默认 0

返回:

(h1, h2) 两个 64 位哈希值

static _murmur128_impl(data: bytes, seed: int = 0) tuple

MurmurHash3 128 位(x64)纯 Python 实现。

static _fmix64(k: int) int

64 位 finalization mix。

static city_hash32(data: bytes) int

CityHash 32 位算法(简化实现)。

参数:

data – 字节数组

返回:

32位哈希值

static city_hash64(data: bytes, seed: int = 0) int

CityHash 64 位算法(简化实现)。

参数:
  • data – 字节数组

  • seed – 种子,默认 0

返回:

64位哈希值

static city_hash128(data: bytes) tuple

CityHash 128 位算法(简化实现)。

参数:

data – 字节数组

返回:

(h1, h2) 两个 64 位哈希值

static metro_hash64(data: bytes, seed: int = 0) int

MetroHash 64 位算法(简化实现)。

参数:
  • data – 字节数组

  • seed – 种子,默认 0

返回:

64位哈希值

static metro_hash128(data: bytes, seed: int = 0) tuple

MetroHash 128 位算法(简化实现)。

参数:
  • data – 字节数组

  • seed – 种子,默认 0

返回:

(h1, h2) 两个 64 位哈希值

static hf_hash(data: str) int

HF 哈希算法。

参数:

data – 输入字符串

返回:

哈希值

static hf_ip_hash(data: str) int

HF IP 哈希算法。

参数:

data – 输入字符串

返回:

哈希值

static fnv_hash(data: bytes) int

FNV-1a 32位哈希(fnv1a 的别名)。

参数:

data – 输入字节数据

返回:

32位哈希值

static identity_hash_code(obj: Any) int

对象标识哈希。

类似 Java 的 System.identityHashCode(),返回基于对象 id 的哈希值。

参数:

obj – 任意对象

返回:

哈希值