exussum12 / xxhash
纯PHP实现的xxHash
1.3
2020-11-30 09:04 UTC
Requires
- php: >=7.4
- ext-bcmath: *
Requires (Dev)
- phpunit/phpunit: ^7.1|^8.0|^9.0
This package is auto-updated.
Last update: 2024-08-29 04:34:14 UTC
README
纯PHP实现的xxhash
目前仅支持32位版本。(PHP 7.4之前)。PHP 7.4支持32位和64位版本
如果速度很重要,请使用FFI版本(PHP 7.4+)
XXHash是一个专为文件完整性检查设计的快速哈希算法。请勿使用此算法对密码进行哈希,请使用Argon2或BCrypt。
在PHP 8.1中,xxhash默认已包含,请使用该版本
hash('xxh32', 'string');
用于字符串模式或
$context = hash_init('xxh3');
hash_update($context, 'String1'); // from fgets or similar
hash_update($context, 'String2'); // from fgets or similar
hash_final($context);
安装
使用composer
composer require exussum12/xxhash
哈希输入
xxhash有一个种子,默认为0。要创建xxhash的新实例,请运行
use exussum12\xxhash\V32;
$seed = 0;
$hash = new V32($seed);
然后对输入进行哈希,运行
$hash->hash('string'); ## to hash a string
或
$file = fopen('path/to/file.ext', 'r');
$hash->hashStream($file); # for a stream (better for large files)
库也可以静态调用,但这将移除更改种子的能力。默认种子为0将被使用
V32::hash('string'); ## to hash a string
$file = fopen('path/to/file.ext', 'r');
V32::hashStream($file); # for a stream (better for large files)
通常应避免使用静态函数,因此第一种方法是首选的方法
FFI
自PHP 7.4以来,FFI允许PHP调用原生C客户端。这要快得多,如果你运行的是PHP 7.4,这是首选的方法
速度比较
这是使用流方法对320MB文件进行哈希处理。时间表示所需时间(越小越好)
使用/usr/bin/time -v
测量内存