GORAGOD.com

เทคนิคการตรวจสอบความผิดพลาดของข้อมูลด้วยวิธี Cyclic Redundancy Check (CRC) ในภาษา PHP

คำสั่ง PHP ที่ใช้การคำนวณ checksum หรือการตรวจสอบความผิดพลาดของข้อมูล ด้วยวิธี Cyclic Redundancy Check หรือ CRC แบบ 16 บิต
function hashString(string $data): string
{
    $crc = crc16($data);
    return dechex($crc);
}

function crc16(string $data): int
{
    $crc = 0xFFFF;
    for ($i = 0; $i < strlen($data); $i++) {
        $x = (($crc >> 8) ^ ord($data[$i])) & 0xFF;
        $x ^= $x >> 4;
        $crc = (($crc << 8) ^ ($x << 12) ^ ($x << 5) ^ $x) & 0xFFFF;
    }
    return $crc;
}

ฟังก์ชัน crc16() เป็นฟังก์ชั่นคำนวณและส่งคืน checksum ของข้อมูลที่รับเข้ามา โดยใช้วิธีคำนวณแบบ CRC-16 (Cyclic Redundancy Check) ซึ่งเป็นหนึ่งในวิธีคำนวณ checksum ที่ใช้กันอย่างแพร่หลาย

ส่วนฟังก์ชั่น hashString จะส่งคืนผลลัพท์ที่ได้จากฟังก์ชั่น crc16() คำนวณ checksum ของข้อมูลที่รับเข้ามาแล้วแปลงค่า checksum เป็นสตริงเลขฐานสิบหกด้วยฟังก์ชัน dechex() ก่อนส่งคืนผลลัพท์เป็นสตริงค์

วิธีใช้งาน
echo hashString('0123456ABC');