Encoding
Encoding เป็นการแปลงข้อมูลให้อยู่ในรูปแบบที่ระบบสามารถเข้าใจได้. จุดประสงค์หลักคือเพื่อความสะดวกในการรับส่งข้อมูล ไม่ใช่เพื่อความปลอดภัย.
เช่น:
- ASCII: แปลงตัวอักษรเป็นตัวเลข เช่น 'A' เป็น 65
- Base64: ใช้ในการส่งข้อมูลผ่านอีเมล เช่น "Hello" เป็น "SGVsbG8="
Encoding สามารถถอดกลับเป็นข้อมูลต้นฉบับได้ง่าย โดยไม่ต้องใช้กุญแจพิเศษ
Encryption
Encryption เป็นการเข้ารหัสข้อมูลเพื่อรักษาความลับ. จุดประสงค์หลักคือป้องกันไม่ให้ผู้ที่ไม่ได้รับอนุญาตเข้าถึงข้อมูล.
เช่น:
- AES: ใช้ในการเข้ารหัสข้อมูลในฮาร์ดดิสก์
- RSA: ใช้ในการเข้ารหัสการสื่อสารทางอินเทอร์เน็ต
- Caesar Cipher: วิธีการเข้ารหัสอย่างง่าย โดยเลื่อนตัวอักษรไปตามจำนวนที่กำหนด
การถอดรหัส Encryption จำเป็นต้องใช้กุญแจ (key) ที่ถูกต้อง.
Hashing
Hashing เป็นการแปลงข้อมูลให้เป็นค่าคงที่ที่ไม่สามารถแก้ไขหรือถอดกลับได้. จุดประสงค์หลักคือเพื่อตรวจสอบความถูกต้องของข้อมูล.
เช่น:
- SHA-256: ใช้ในการตรวจสอบความถูกต้องของไฟล์ดาวน์โหลด
- MD5: ใช้ในการตรวจสอบความถูกต้องของข้อมูลในฐานข้อมูล
- bcrypt: ใช้ในการเก็บรหัสผ่านของผู้ใช้ในระบบ
ตัวอย่างการใช้งาน Hashing:
- ตรวจสอบความถูกต้องของไฟล์: เปรียบเทียบค่า hash ของไฟล์ที่ดาวน์โหลดกับค่า hash ที่ผู้ให้บริการระบุไว้.
- เก็บรหัสผ่าน: ระบบเก็บเฉพาะค่า hash ของรหัสผ่าน ไม่ใช่รหัสผ่านจริง เพื่อความปลอดภัย.
การ Hashing มีคุณสมบัติสำคัญคือ:
- Input เดิมจะได้ output เดิมเสมอ
- Input ต่างกันจะได้ output ต่างกัน
- ไม่สามารถย้อนกลับจาก output เป็น input ได้
- การเปลี่ยนแปลง input เพียงเล็กน้อยจะส่งผลให้ output เปลี่ยนแปลงอย่างมาก
NOTE:
- Encoding ใช้เพื่อความสะดวกในการส่งข้อมูล
- Encryption ใช้เพื่อรักษาความลับของข้อมูล
- Hashing ใช้เพื่อตรวจสอบความถูกต้องของข้อมูล.
โดยในการการเลือกใช้แต่ละวิธีขึ้นอยู่กับวัตถุประสงค์ในการใช้งานข้อมูลนั้น ๆ