hutool.core.util.hasher¶
哈希工具类
Module Contents¶
Classes¶
哈希工具类,对应 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 – 任意对象
- 返回:
哈希值