当前位置:首页 > PHP

murmurhash的php实现

2026-02-15 13:59:39PHP

murmurhash的php实现

MurmurHash PHP 实现

MurmurHash 是一种非加密型哈希函数,适用于一般的哈希检索操作。以下是 PHP 的实现方式:

murmurhash的php实现

方法一:直接实现 MurmurHash3

function murmurhash3($key, $seed = 0) {
    $key = (string)$key;
    $len = strlen($key);
    $h1 = $seed;
    $c1 = 0xcc9e2d51;
    $c2 = 0x1b873593;

    $i = 0;
    while ($i <= $len - 4) {
        $k1 = ord($key[$i]) | (ord($key[$i + 1]) << 8) | (ord($key[$i + 2]) << 16) | (ord($key[$i + 3]) << 24);

        $k1 = ($k1 * $c1) & 0xFFFFFFFF;
        $k1 = ($k1 << 15) | ($k1 >> 17);
        $k1 = ($k1 * $c2) & 0xFFFFFFFF;

        $h1 ^= $k1;
        $h1 = ($h1 << 13) | ($h1 >> 19);
        $h1 = ($h1 * 5 + 0xe6546b64) & 0xFFFFFFFF;

        $i += 4;
    }

    $k1 = 0;
    switch ($len - $i) {
        case 3: $k1 ^= ord($key[$i + 2]) << 16;
        case 2: $k1 ^= ord($key[$i + 1]) << 8;
        case 1: $k1 ^= ord($key[$i]);
            $k1 = ($k1 * $c1) & 0xFFFFFFFF;
            $k1 = ($k1 << 15) | ($k1 >> 17);
            $k1 = ($k1 * $c2) & 0xFFFFFFFF;
            $h1 ^= $k1;
    }

    $h1 ^= $len;
    $h1 ^= ($h1 >> 16);
    $h1 = ($h1 * 0x85ebca6b) & 0xFFFFFFFF;
    $h1 ^= ($h1 >> 13);
    $h1 = ($h1 * 0xc2b2ae35) & 0xFFFFFFFF;
    $h1 ^= ($h1 >> 16);

    return $h1;
}

方法二:使用扩展库

若 PHP 环境允许安装扩展,可以使用 murmurhash 扩展:

  1. 安装扩展:
    pecl install murmurhash
  2. 在 PHP 中调用:
    $hash = murmurhash("input string");

注意事项

  • 32 位与 64 位系统可能产生不同结果,需根据环境调整实现。
  • 直接实现的版本未处理大端序/小端序问题,跨平台时需额外注意。
  • 对于生产环境,建议使用扩展或已验证的库(如 hashids 等封装库)。

性能优化

  • 避免在循环中频繁调用 MurmurHash,可缓存结果。
  • 对短字符串哈希,直接实现可能比扩展更快;长字符串则相反。

以上代码可直接用于项目,需根据实际需求调整种子($seed)值。

标签: murmurhashphp
分享给朋友:

相关文章

php实现文件上传

php实现文件上传

文件上传的基本实现 在PHP中实现文件上传需要使用$_FILES超全局数组处理上传的文件数据。表单必须设置enctype="multipart/form-data"属性,并采用POST方法提交。 创…

php 实现验证码

php 实现验证码

使用 PHP 生成验证码 验证码(CAPTCHA)用于防止自动化脚本提交表单,以下是几种常见的 PHP 实现方法。 使用 GD 库生成图片验证码 GD 库是 PHP 的图像处理扩展,可用于生成验证码…

php实现静态

php实现静态

静态化实现方法 PHP实现静态化主要通过生成HTML文件或缓存机制来减少服务器动态解析的开销。以下是几种常见方法: 生成静态HTML文件 通过file_put_contents()将动态内容保存为H…

php实现登陆

php实现登陆

PHP 实现登录功能 创建登录表单 在 HTML 文件中创建一个登录表单,包含用户名和密码输入框,表单的 action 属性指向处理登录的 PHP 文件。 <form action="logi…

php实现注册登录

php实现注册登录

PHP 注册功能实现 创建数据库表(以 MySQL 为例) CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, usern…

php实现https

php实现https

PHP 实现 HTTPS 请求 在 PHP 中实现 HTTPS 请求,可以通过多种方式完成,包括使用内置函数、cURL 扩展或第三方库。以下是几种常见的方法: 使用 file_get_content…