gpt4 book ai didi

php - CRC64文件校验PHP实现

转载 作者:可可西里 更新时间:2023-10-31 22:57:37 25 4
gpt4 key购买 nike

我需要使用 PHP 获取文件的 CRC64 校验和。

用这段代码

file_put_contents('example.txt', 'just an example');

echo hash_file('crc32', 'example.txt');

我得到 CRC32 校验和“c8c429fe”;

但我需要使用 CRC64 算法获得校验和 (

enter image description here )

我是从这里拿来的:http://en.wikipedia.org/wiki/Cyclic_redundancy_check

如何在 PHP 中实现此哈希算法?

最佳答案

在 php 64 位上实现 crc64()

https://www.php.net/manual/en/function.crc32.php#111699

<?php

/**
* @return array
*/
function crc64Table()
{
$crc64tab = [];

// ECMA polynomial
$poly64rev = (0xC96C5795 << 32) | 0xD7870F42;

// ISO polynomial
// $poly64rev = (0xD8 << 56);

for ($i = 0; $i < 256; $i++)
{
for ($part = $i, $bit = 0; $bit < 8; $bit++) {
if ($part & 1) {
$part = (($part >> 1) & ~(0x8 << 60)) ^ $poly64rev;
} else {
$part = ($part >> 1) & ~(0x8 << 60);
}
}

$crc64tab[$i] = $part;
}

return $crc64tab;
}

/**
* @param string $string
* @param string $format
* @return mixed
*
* Formats:
* crc64('php'); // afe4e823e7cef190
* crc64('php', '0x%x'); // 0xafe4e823e7cef190
* crc64('php', '0x%X'); // 0xAFE4E823E7CEF190
* crc64('php', '%d'); // -5772233581471534704 signed int
* crc64('php', '%u'); // 12674510492238016912 unsigned int
*/
function crc64($string, $format = '%x')
{
static $crc64tab;

if ($crc64tab === null) {
$crc64tab = crc64Table();
}

$crc = 0;

for ($i = 0; $i < strlen($string); $i++) {
$crc = $crc64tab[($crc ^ ord($string[$i])) & 0xff] ^ (($crc >> 8) & ~(0xff << 56));
}

return sprintf($format, $crc);
}

关于php - CRC64文件校验PHP实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10245575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com