เทคนิคการตรวจสอบความผิดพลาดของข้อมูลด้วยวิธี Cyclic Redundancy Check (CRC) ในภาษา PHP
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');