xp-forge / hashing
哈希库
v2.3.0
2024-06-23 19:25 UTC
Requires
- php: >=7.0.0
- xp-framework/core: ^12.0 | ^11.0 | ^10.0 | ^9.0 | ^8.0 | ^7.0
Requires (Dev)
- xp-framework/test: ^2.0 | ^1.0
README
PHP提供的哈希函数的流畅接口,扩展了Murmur3。
示例
计算字符串的哈希值,使用base32输出
use text\hash\Hashing; $hash= Hashing::murmur3_32()->new($seed= 0x2a); $base32= $hash->digest('The quick brown fox jumps over the lazy dog.')->base32();
增量更新哈希值,输出十六进制(类似于内置的md5()
函数的做法)
use text\hash\Hashing; $hash= Hashing::md5()->new(); while ($stream->available()) { $hash->update($stream->read()); } $hex= $hash->digest()->hex();
使用常量时间比较比较哈希值
use text\hash\{Hashing, HashCode}; $computed= Hashing::sha256()->digest($req->param('password')); // From request $stored= HashCode::fromHex($record['password_hash']); // From database if ($computed->equals($stored)) { // Not susceptible to timing attacks }
算法
以下算法作为入口类中的快捷方式存在
Hashing::md5()
Hashing::sha1()
Hashing::sha256()
Hashing::sha512()
Hashing::murmur3_32()
Hashing::murmur3_128()
可以通过Hashing::algorithm(string $name, var... $args)
实例化其他算法,如果给定的算法不可用,可能会抛出IllegalArgumentException。