Showing posts with label Encryption. Show all posts
Showing posts with label Encryption. Show all posts

Wednesday, July 12, 2023

Encoding, Encryption และ Hashing: ความแตกต่างที่สำคัญ

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 ใช้เพื่อตรวจสอบความถูกต้องของข้อมูล. 
โดยในการการเลือกใช้แต่ละวิธีขึ้นอยู่กับวัตถุประสงค์ในการใช้งานข้อมูลนั้น ๆ