exussum12/xxhash

纯PHP实现的xxHash

1.3 2020-11-30 09:04 UTC

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测量内存