DevToolPal
ไทย

เข้ารหัสและถอดรหัส AES

เข้ารหัสและถอดรหัสข้อความด้วย AES-GCM หรือ AES-CBC โดยใช้วลีรหัสผ่าน (PBKDF2) หรือคีย์ฐานสิบหก ผลลัพธ์เป็น Base64

ทำงานในเครื่อง ไม่มีการอัปโหลด

ตัวเลือก

โหมด
อัลกอริทึม
คีย์
ขนาดคีย์

อินพุต

0 ตัวอักษร · 0 B

เอาต์พุต

0 ตัวอักษร · 0 B

เครื่องมือนี้ทำอะไร

AES (Advanced Encryption Standard) คือการเข้ารหัสแบบสมมาตรที่ใช้แทบทุกที่ ทั้ง HTTPS การเข้ารหัสดิสก์ โปรแกรมจัดการรหัสผ่าน และแอปแชต คีย์ลับเดียวกันใช้ทั้งเข้ารหัสและถอดรหัส เครื่องมือนี้เข้ารหัสข้อความเป็น Base64 ที่วางที่ไหนก็ได้ และถอดรหัสกลับได้

คุณสามารถใช้:

  • วลีรหัสผ่าน ซึ่งถูกแปลงเป็นคีย์ 128 หรือ 256 บิตด้วย PBKDF2-HMAC-SHA256 และ salt สุ่ม หรือ
  • คีย์ฐานสิบหก 32 หรือ 64 หลัก (128 หรือ 256 บิต) ที่ใช้โดยตรง คลิก สุ่มคีย์ เพื่อสร้างคีย์ใหม่

มีโหมดการทำงานสองแบบ AES-GCM เป็นค่าเริ่มต้นสมัยใหม่ที่ตรวจจับการแก้ไขข้อมูลได้ AES-CBC พร้อม padding แบบ PKCS#7 มีไว้เพื่อความเข้ากันได้กับระบบเก่า

วิธีใช้

  1. เลือก เข้ารหัส หรือ ถอดรหัส อัลกอริทึม และชนิดคีย์
  2. พิมพ์วลีรหัสผ่านหรือวางคีย์ฐานสิบหกที่ด้านบนของช่องอินพุต
  3. วางข้อความ (หรือ Base64 ที่จะถอดรหัส) ผลลัพธ์จะแสดงทางขวา ใช้เป็นอินพุต จะสลับทิศทางเพื่อตรวจว่าเข้ารหัสแล้วถอดกลับได้

รูปแบบผลลัพธ์

ผลลัพธ์เป็นสตริง Base64 เดียว เพื่อไม่ให้เสียหายเมื่อส่งทางอีเมลหรือแชต:

passphrase:  salt (16 bytes) | IV (12 GCM / 16 CBC) | ciphertext (+ 16-byte tag for GCM)
hex key:     IV (12 GCM / 16 CBC) | ciphertext (+ 16-byte tag for GCM)

การถอดรหัสต้องใช้อัลกอริทึม ชนิดคีย์ ขนาดคีย์ และจำนวนรอบเดียวกับตอนเข้ารหัส การตั้งค่าเหล่านี้ถูกเก็บไว้ในที่อยู่หน้าเว็บ ลิงก์ที่แชร์จึงพาค่าเหล่านี้ไปด้วย ส่วนคีย์ยังอยู่กับคุณ

การเลือกวลีรหัสผ่าน

PBKDF2 ทำให้การเดาแต่ละครั้งช้าลง แต่ช่วยวลีรหัสผ่านที่สั้นหรือพบบ่อยไม่ได้ ใช้วลีรหัสผ่านที่ยาวและสุ่ม เช่นจากเครื่องมือสร้างรหัสผ่าน และส่งผ่านช่องทางที่ต่างจากข้อความเข้ารหัส จำนวนรอบที่มากขึ้นทำให้เดายากขึ้นและถอดรหัสช้าลงเล็กน้อย ค่าที่นิยมคือ 100,000 ถึง 600,000

คำถามที่พบบ่อย

› ควรเลือก GCM หรือ CBC

เลือก GCM เว้นแต่ระบบอื่นบังคับให้ใช้ CBC GCM มีการยืนยันความถูกต้อง คีย์ผิดหรือไบต์ที่ถูกแก้แม้เพียงไบต์เดียวจะถูกตรวจพบแทนที่จะได้ข้อมูลขยะ CBC ให้เพียงการรักษาความลับ และใช้เพื่อความเข้ากันได้กับโค้ดเก่าเป็นหลัก

› ทำไมข้อความเข้ารหัสจึงต่างกันทุกครั้ง

การเข้ารหัสแต่ละครั้งใช้ IV สุ่มชุดใหม่ และหากใช้วลีรหัสผ่านก็จะใช้ salt สุ่มชุดใหม่ด้วย ทั้งสองถูกเก็บไว้ที่ต้นผลลัพธ์ การถอดรหัสจึงยังทำได้ การใช้ IV ซ้ำกับคีย์เดิม โดยเฉพาะใน GCM เป็นจุดอ่อนร้ายแรง

› จะถอดรหัสผลลัพธ์ในโค้ดของตัวเองได้อย่างไร

ถอด Base64 ก่อน หากใช้วลีรหัสผ่าน 16 ไบต์แรกคือ salt ของ PBKDF2 ตามด้วย IV (GCM 12 ไบต์ CBC 16 ไบต์) แล้วจึงเป็นข้อความเข้ารหัส สร้างคีย์ด้วย PBKDF2-HMAC-SHA256 จำนวนรอบเท่าเดิม หากใช้คีย์ฐานสิบหกจะไม่มี salt สำหรับ GCM 16 ไบต์สุดท้ายคือแท็กยืนยันความถูกต้อง

› วลีรหัสผ่านหรือคีย์ของฉันถูกบันทึกหรือส่งไปที่ไหนหรือไม่

ไม่ การเข้ารหัสทำในเบราว์เซอร์ด้วย Web Crypto API วลีรหัสผ่านหรือคีย์อยู่ในหน่วยความจำของหน้านี้เท่านั้น ไม่ถูกบันทึก ไม่ถูกเขียนลงแถบที่อยู่ และไม่รวมในลิงก์แชร์ คุณจึงแชร์ข้อความที่เข้ารหัสได้โดยไม่ต้องส่งคีย์