CRC เป็นตัวเลขสั้นๆ ที่คำนวณจากเนื้อหาของไฟล์ในขณะที่ไฟล์นั้นถูกเพิ่มเข้าไปในไฟล์บีบอัด ทำหน้าที่เหมือนลายนิ้วมือ เพื่อให้สามารถตรวจสอบได้ภายหลังว่าไฟล์ที่แตกออกมาจากไฟล์บีบอัดเหมือนกับตอนที่ใส่เข้าไปทุกประการ CRC ย่อมาจาก cyclic redundancy check
มาจากที่ไหน และไฟล์ใดบ้างที่มีมัน
ไฟล์บีบอัดจะมีค่า CRC อยู่ นั่นหมายถึงไฟล์ ZIP และรูปแบบไฟล์อื่นมากมายที่พัฒนาต่อยอดจาก ZIP รวมถึง .docx, .xlsx, .epub, .jar และ .apk ในขณะที่ RAR, 7z และรูปแบบอื่นจะมี checksum ของตัวเอง รายงานอาจไม่แสดงค่านี้สำหรับไฟล์ .epub แม้ว่าไฟล์จะเก็บค่า CRC ไว้ก็ตาม
โปรแกรมบีบอัดจะคำนวณค่านี้จากเนื้อหาดั้งเดิมที่ยังไม่บีบอัดของไฟล์ และบันทึกค่าไว้คู่กับรายการไฟล์นั้น ดังนั้นไฟล์แต่ละไฟล์ในไฟล์บีบอัดจะมี CRC ของตัวเอง คุณไม่สามารถเลือกหรือพิมพ์ค่าเองได้ และมันไม่ใช่ข้อมูลเกี่ยวกับตัวคุณหรือคอมพิวเตอร์ของคุณ ค่า CRC มาจากไบต์ของไฟล์ล้วนๆ
เหตุผลที่ต้องบันทึกค่านี้คือเพื่อนำมาเปรียบเทียบในภายหลัง เมื่อแตกไฟล์บีบอัด โปรแกรมจะคำนวณค่า CRC จากข้อมูลที่เพิ่งแตกออกมาอีกครั้งแล้วนำมาเปรียบเทียบกัน หากค่าไม่ตรงกัน คุณจะเห็นข้อความแจ้งข้อผิดพลาด CRC ที่คุ้นเคยใน WinZip, 7-Zip หรือคำสั่ง unzip ซึ่งหมายความว่าไฟล์ที่แตกออกมาไม่ตรงกับไฟล์ที่ถูกเพิ่มเข้าไปในตอนแรก เรื่องนี้บอกเป็นนัยว่ามีความเสียหายเกิดขึ้นระหว่างทาง เช่น ดาวน์โหลดขาดช่วง ดิสก์เริ่มเสีย หรือไฟล์ถูกคัดลอกมาไม่ครบ เพียงแค่มีไฟล์เสียหายไฟล์เดียวก็เพียงพอให้เกิดข้อความนี้ได้ แม้ว่าไฟล์อื่นๆ ในไฟล์บีบอัดจะยังใช้งานได้ปกติก็ตาม
ลักษณะของค่านั้นเป็นอย่างไร
ZIP ใช้รูปแบบหนึ่งที่เรียกว่า CRC-32 ซึ่งให้ตัวเลข 32 บิต โดยมักแสดงเป็นตัวเลขฐานสิบหก 8 หลัก เช่น 0x8f3d2b1c และบางโปรแกรมอาจแสดงค่าเดียวกันนี้ในรูปของตัวเลขฐานสิบแบบยาวแทน ค่านี้ไม่มีหน่วย และไม่มีสเกลที่บอกว่าค่าไหนดีกว่าหรือแย่กว่า ไฟล์เปล่า หรือรายการโฟลเดอร์ที่ไม่มีข้อมูลจะแสดงค่าเป็น 0x00000000
ทำไมมันจึงสำคัญ
นี่คือข้อมูลสำหรับตรวจสอบความสมบูรณ์ของข้อมูล และเป็นหลักฐานในตัวของไฟล์บีบอัดเองว่าข้อมูลรอดพ้นจากการจัดเก็บและการส่งต่อมาได้ การเห็น CRC ในรายงาน metadata ไม่ได้หมายความว่าไฟล์บีบอัดของคุณมีปัญหา แต่มันเป็นเพียงค่าที่ถูกบันทึกไว้ตอนสร้างไฟล์บีบอัดเท่านั้น การตรวจสอบจริงจะเกิดขึ้นตอนที่คุณแตกไฟล์ ไม่ใช่ตอนที่คุณเปิดดู
CRC ยังมีประโยชน์อีกอย่างหนึ่ง เนื้อหาที่เหมือนกันจะให้ค่า CRC เหมือนกันเสมอ ดังนั้นสองรายการที่มีค่า CRC และขนาดเท่ากันแทบจะแน่นอนว่าเป็นไฟล์เดียวกัน ทำให้สามารถใช้ตรวจหาไฟล์ซ้ำภายในไฟล์บีบอัดขนาดใหญ่ได้อย่างรวดเร็ว
สิ่งที่ CRC ไม่ใช่ก็คือฟีเจอร์ด้านความปลอดภัย CRC ถูกออกแบบมาเพื่อตรวจจับความเสียหายโดยไม่ตั้งใจ และมีความยาวสั้นพอที่ใครสักคนจะจงใจสร้างไฟล์ให้ได้ค่าเดียวกันได้ ดังนั้นการที่ CRC ตรวจสอบผ่านจึงไม่ใช่หลักฐานว่าคงไม่มีใครแก้ไขไฟล์เลย ค่าแฮชแบบเข้ารหัส เช่น SHA-256 จึงถูกใช้สำหรับงานนั้น เนื่องจากค่าถูกคำนวณจากเนื้อหา จึงสามารถใช้ตรวจสอบได้ด้วยว่าไฟล์บีบอัดสองไฟล์ที่ต่างกันมีไฟล์เดียวกันอยู่หรือไม่ ซึ่งบางครั้งก็เป็นประโยชน์ และควรนึกถึงไว้บ้างก่อนที่คุณจะส่งไฟล์บีบอัดให้ผู้อื่น