![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/medad.corals.io/vendor/google/crc32/src/ |
<?php /** * Copyright 2019 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace Google\CRC32; use Google\CRC32\Builtin; use Google\CRC32\Google; use Google\CRC32\PHP; /** * Various CRC32 implementations. * * ``` * use Google\CRC32\CRC32; * * $crc = CRC32::create(CRC32::CASTAGNOLI); * $crc->update('hello'); * * echo $crc->hash(); * ``` */ class CRC32 { use CRCTrait; /** * IEEE polynomial as used by ethernet (IEEE 802.3), v.42, fddi, gzip, * zip, png, ... */ const IEEE = 0xedb88320; /** * Castagnoli's polynomial, used in iSCSI, SCTP, Google Cloud Storage, * Apache Kafka, and has hardware-accelerated in modern intel CPUs. * https://doi.org/10.1109/26.231911 */ const CASTAGNOLI = 0x82f63b78; /** * Koopman's polynomial. * https://doi.org/10.1109/DSN.2002.1028931 */ const KOOPMAN = 0xeb31d82e; /** * The size of the checksum in bytes. */ const SIZE = 4; private static $mapping = [ self::IEEE => 'IEEE', self::CASTAGNOLI => 'Castagnoli', self::KOOPMAN => 'Koopman', ]; private function __construct() { // Prevent instantiation. } /** * Returns the best CRC implementation available on this machine. * * @param integer $polynomial The CRC polynomial. Use a 32-bit number, * or one of the supplied constants, CRC32::IEEE, * CRC32::CASTAGNOLI, or CRC32::KOOPMAN. * * @return CRC32Interface */ public static function create($polynomial) { if (Google::supports($polynomial) && function_exists('crc32c')) { return new Google(); } if (Builtin::supports($polynomial)) { return new Builtin($polynomial); } // Fallback to the pure PHP version return new PHP($polynomial); } /** * Prints the human friendly name for this polynomial. * * @param integer $polynomial The CRC polynomial. * * @return string */ public static function string($polynomial) { if (isset(self::$mapping[$polynomial])) { return self::$mapping[$polynomial]; } return '0x' . self::int2hex($polynomial); } }