Toolonit
  1. หน้าแรก
  2. เข้ารหัสลับ
  3. เข้ารหัส / ถอดรหัส
  4. DES

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

ถอดรหัสหรือเข้ารหัสข้อมูลรุ่นเก่าด้วย DES แบบเดี่ยว (single DES)

DES ถือว่าอ่อนแอตามมาตรฐานปัจจุบัน ใช้เพื่ออ่านข้อมูลเก่า ส่วนข้อมูลใหม่ให้ใช้ AES หรือ ChaCha20 ไปที่ AES

เข้ารหัสด้วย

ต้องใช้รหัสผ่านนี้อีกครั้งเพื่อถอดรหัส สิ่งที่คุณพิมพ์จะไม่ออกจากหน้านี้

จำนวนรอบ PBKDF2

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

โหมด

ตัวเลือกปกติเมื่อใช้กับ OpenSSL ต้องใช้ IV และเติม padding ให้เต็มบล็อก

ผลลัพธ์เป็น
ทำแบบเดียวกันด้วย OpenSSL
openssl enc -des-cbc -pbkdf2 -iter 10000 -a -A -provider legacy -provider default

OpenSSL จะถามรหัสผ่าน ให้วางข้อความลงไป หรือเพิ่มไฟล์ -in และ -out

DES หรือ Data Encryption Standard ปี 1977 เข้ารหัสทีละบล็อกขนาด 8 ไบต์ด้วยคีย์ 64 บิต ซึ่งมีผลจริงเพียง 56 บิต อีก 8 บิตเป็นบิตพาริตี DES ถูกเจาะด้วยการลองทุกค่า (brute force) มานานแล้ว แต่ไฟล์ การตั้งค่า และฐานข้อมูลเก่ายังเก็บค่าที่เข้ารหัสด้วย DES อยู่ หน้านี้อ่านและเขียนค่าเหล่านั้นได้ โดยใช้โหมด CBC เป็นค่าเริ่มต้น หรือ ECB, CFB, OFB หรือ CTR ด้วยรหัสผ่านในรูปแบบ openssl enc -pbkdf2 หรือคีย์และ IV แบบ hex 16 หลัก ใช้เพื่อกู้ข้อมูลเก่า แล้วเข้ารหัสข้อมูลนั้นใหม่ด้วย AES ทุกอย่างทำงานในเบราว์เซอร์ ข้อมูลและคีย์จึงไม่ออกจากอุปกรณ์ของคุณ ใช้ฟรีและไม่ต้องสมัครสมาชิก

วิธีถอดรหัสข้อความที่เข้ารหัสด้วย DES

  1. เลือก “ถอดรหัส” แล้ววางข้อความ Base64 หรือ hex ซึ่งระบบจะตรวจรูปแบบให้อัตโนมัติ หรือเลือก “เข้ารหัส” แล้วพิมพ์ข้อความ
  2. ใส่รหัสผ่าน หรือสลับไปที่ “คีย์และ IV (hex)” แล้วใส่คีย์ 16 หลักและ IV 16 หลัก (ECB ไม่มี IV)
  3. เลือกโหมดที่ใช้สร้างข้อมูล ซึ่งส่วนใหญ่คือ CBC หรือ ECB เปิด “ไม่ใช้ padding” เฉพาะเมื่อข้อมูลถูกเข้ารหัสโดยไม่มี padding แบบ PKCS#7
  4. คัดลอกหรือดาวน์โหลดผลลัพธ์ ไบต์ที่ไม่ใช่ข้อความจะแสดงเป็น hex

ความสามารถ

  • DES แบบเดี่ยวด้วยคีย์ 64 บิต: บิตคีย์ 56 บิตและบิตพาริตี 8 บิต
  • โหมด CBC, ECB, CFB, OFB และ CTR พร้อม padding แบบ PKCS#7 หรือไม่ใช้ padding
  • โหมดรหัสผ่านในรูปแบบ openssl enc -pbkdf2 ตั้งจำนวนรอบ PBKDF2 ได้ตามต้องการ
  • โหมดคีย์และ IV ด้วยคีย์และ IV แบบ hex 16 หลัก พิมพ์เองหรือสุ่มสร้าง
  • คำสั่ง openssl ที่ทำแบบเดียวกัน โดยใช้ legacy provider ของ OpenSSL 3
  • ตรวจอินพุต Base64 หรือ hex อัตโนมัติ ผลลัพธ์ที่ไม่ใช่ข้อความแสดงเป็น hex และดาวน์โหลดเป็นไบต์ได้

เป็นส่วนตัวหรือไม่

ใช่ DES ทำงานด้วย WebAssembly ภายในเบราว์เซอร์ของคุณ ข้อมูลเก่าที่คุณถอดรหัส รวมถึงคีย์หรือรหัสผ่าน จึงไม่เคยถูกอัปโหลดหรือเก็บไว้ที่ใด

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

การเข้ารหัส DES ปลอดภัยไหม

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

ทำไม OpenSSL จึงขึ้นว่า “Error setting cipher DES-CBC”

เพราะ OpenSSL 3 ย้าย DES ไปไว้ใน legacy provider ซึ่งไม่ได้โหลดไว้โดยค่าเริ่มต้น ให้เพิ่มเข้าไป: echo 'U2FsdGVkX1…' | openssl enc -d -des-cbc -pbkdf2 -iter 10000 -a -A -provider legacy -provider default ใช้ -des-ecb, -des-cfb หรือ -des-ofb สำหรับโหมดเหล่านั้น (OpenSSL ไม่มี DES โหมด CTR) และใช้ -K <hex 16 หลัก> -iv <hex 16 หลัก> แทน -pbkdf2 -iter ในโหมดคีย์และ IV

คีย์ DES มีหน้าตาอย่างไร

ยาว 8 ไบต์ เขียนเป็น hex 16 หลัก บิตต่ำสุดของแต่ละไบต์เป็นบิตพาริตีที่ DES ไม่สนใจ คีย์ที่ต่างกันเฉพาะบิตเหล่านี้จึงถอดรหัสได้เหมือนกัน IV ก็ยาว 8 ไบต์เช่นกัน ส่วน ECB ไม่ใช้ IV ในโหมดรหัสผ่าน ทั้งคีย์และ IV ได้มาจากรหัสผ่าน คุณจึงไม่ต้องใช้ทั้งสองอย่าง

DES กับ Triple DES ต่างกันอย่างไร

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

ทำไมจึงได้ข้อความที่อ่านไม่ออก

เพราะมีค่าที่ไม่ตรงกับตอนเข้ารหัส ได้แก่ รหัสผ่านหรือคีย์ จำนวนรอบ โหมด หรือ padding ในโหมด CFB, OFB และ CTR นั้น DES ตรวจจับความไม่ตรงกันไม่ได้และคืนไบต์สุ่ม ซึ่งหน้านี้แสดงเป็น hex ส่วน CBC และ ECB มักจบด้วยข้อผิดพลาดแทน

เครื่องมือที่เกี่ยวข้อง