CRC32 - PHP与Java的不同结果

时间:2016-06-09 14:14:01

标签: java php crc32

我有一个现有的Java代码,可以在文件的前25MB上计算CRC32:

            File file = new File(filepath);
            fileLength = file.length();

            FileInputStream fileHandle = new FileInputStream(filepath);
            CheckedInputStream checkedHandle = new CheckedInputStream(fileHandle, new CRC32());
            BufferedInputStream bufferedIn = new BufferedInputStream(checkedHandle);

            if (fileLength <= 25 * 1024 * 1024) {
                while (bufferedIn.read() != -1) {}
                firstChecksum = checkedHandle.getChecksum().getValue();
            } else {
                byte[] b = new byte[25 * 1024 * 1024]; // 25mb
                while (bufferedIn.read(b) >= 0) {}
                firstChecksum = checkedHandle.getChecksum().getValue();
                checkedHandle.close();
                bufferedIn.close();
                fileHandle.close();
            }

我们正在尝试在PHP中实现相同的功能。这是我正在尝试的内容:

<?php
$block = 25*1024*1024;
$filesize = filesize("test.mp4");
$in = fopen("test.mp4","r");
$firstblock = fread($in,$block);
fclose($in);
$checksum = crc32($firstblock);
printf("%u\n", $checksum);
?>

然而,我得到了不同的结果。当Java返回1015401640时,Java返回1706882279.我不确定哪里出错了。

我还尝试过使用crc32和crc32b的php hash()函数,但仍然有不同的Java代码结果。

任何人都能说出我失踪的东西吗?

0 个答案:

没有答案