เลขฐานสิบหกในผลลัพธ์การเข้ารหัสลับ
เรียนรู้ว่าเหตุใดค่าแฮช กุญแจ และข้อความเข้ารหัสลับจึงมักแสดงด้วยสัญกรณ์เลขฐานสิบหก
เลขฐานสิบหกในผลลัพธ์การเข้ารหัสลับ เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
เลขฐานสิบหกในฐานะฐาน 16
เลขฐานสิบหก (hex) เป็นระบบเลขฐาน 16 ที่ใช้ตัวเลข 0-9 และตัวอักษร A-F (หรือ a-f) เลขฐานสิบหกแต่ละหลักแทนค่าได้พอดี 4 บิต (นิบเบิล) เนื่องจาก 16 = 2^4
เลขฐานสิบหกเป็นภาษาสากลของข้อมูลไบนารีในการประมวลผล อักขระที่อยู่หน่วยความจำ ค่าไบต์ รหัสสี และผลลัพธ์จากการเข้ารหัสลับ ล้วนมักแสดงในรูปเลขฐานสิบหก
4 บิตต่อเลขฐานสิบหกหนึ่งหลัก
เนื่องจากเลขฐานสิบหกแต่ละหลักแทนค่าได้พอดี 4 บิต ไบต์ทุกไบต์ (8 บิต) จึงจับคู่กับเลขฐานสิบหกได้พอดี 2 หลัก ทำให้การแปลงระหว่างเลขฐานสองกับเลขฐานสิบหกทำได้ง่ายมาก เพียงแบ่งเลขฐานสองเป็นกลุ่มละ 4 บิตแล้วแปลงแต่ละกลุ่ม
ตัวอย่างเช่น ไบต์ 11001010 แบ่งเป็น 1100 (C) และ 1010 (A) จึงได้ค่าเลขฐานสิบหกเป็น CA ไม่ต้องคำนวณ เพียงแปลงโดยใช้ตารางค้นค่า
การแปลงเลขฐานสองเป็นเลขฐานสิบหก
หากต้องการแปลงเลขฐานสองเป็นเลขฐานสิบหก ให้จัดกลุ่มบิตกลุ่มละ 4 บิตจากขวาไปซ้าย แล้วแปลงแต่ละกลุ่ม: 0000=0, 0001=1, ..., 1001=9, 1010=A, 1011=B, 1100=C, 1101=D, 1110=E, 1111=F
ตัวอย่าง: 11111111 กลายเป็น 1111|1111 = FF = 255 ในฐานสิบ ส่วน 00000000 กลายเป็น 00 = 0 ในฐานสิบ และ 01001000 = 0100|1000 = 48 = รหัส ASCII ของ 'H'
เหตุใดเลขฐานสิบหกจึงกะทัดรัดสำหรับข้อมูลไบนารี
คีย์ขนาด 32 ไบต์เต็ม (256 บิต) จะต้องใช้เลขหนึ่งและศูนย์ 256 ตัวหากเขียนเป็นเลขฐานสอง แต่ในเลขฐานสิบหกจะใช้เพียง 64 อักขระ ส่วนในฐานสิบจะเป็นตัวเลขที่ยาวได้ถึง 78 หลัก
เลขฐานสิบหกให้ความสมดุลที่เหมาะสม คือกะทัดรัดพอให้มนุษย์อ่านและเขียนได้ ขณะเดียวกันก็แทนโครงสร้างไบนารีพื้นฐานได้โดยตรงโดยไม่ต้องเสียค่าใช้จ่ายในการแปลง
ผลลัพธ์ SHA-256 ในรูปเลขฐานสิบหก
SHA-256 สร้างค่าแฮชขนาด 256 บิต (32 ไบต์) เมื่อแสดงในรูปเลขฐานสิบหก จะมีอักขระเลขฐานสิบหกครบ 64 ตัวเสมอ ตัวอย่างเช่น ค่าแฮช SHA-256 ของ "hello" คือ 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824.
การนับ: อักขระเลขฐานสิบหก 64 ตัว × 4 บิต = 256 บิต ความยาวคงที่เป็นคุณสมบัติพื้นฐานของฟังก์ชันแฮช โดยไม่ขึ้นกับขนาดข้อมูลอินพุต
การแทนค่าคีย์ในรูปเลขฐานสิบหก
คีย์การเข้ารหัสลับโดยทั่วไปจะจัดเก็บและแสดงเป็นสตริงเลขฐานสิบหก คีย์ AES-128 มีขนาด 16 ไบต์ = อักขระเลขฐานสิบหก 32 ตัว ส่วนคีย์ AES-256 มีขนาด 32 ไบต์ = อักขระเลขฐานสิบหก 64 ตัว
เมื่อกำหนดค่า TLS หรือเข้ารหัสลับไฟล์ คุณมักต้องระบุคีย์เป็นสตริงเลขฐานสิบหก เครื่องมืออย่าง OpenSSL ไลบรารีการเข้ารหัสลับของ Python และกรอบงานการเข้ารหัสลับส่วนใหญ่รองรับและสร้างคีย์ที่เข้ารหัสเป็นเลขฐานสิบหก
สัญกรณ์เวกเตอร์เริ่มต้นและนันซ์
เวกเตอร์เริ่มต้น (IV) และนันซ์ก็แสดงในรูปเลขฐานสิบหกเช่นกัน IV มาตรฐานของ AES-CBC มีขนาด 16 ไบต์ = อักขระเลขฐานสิบหก 32 ตัว ส่วน AES-GCM มักใช้นันซ์ขนาด 12 ไบต์ = อักขระเลขฐานสิบหก 24 ตัว
สัญกรณ์เลขฐานสิบหกช่วยให้ตรวจสอบและเปรียบเทียบ IV ด้วยสายตาได้ง่าย ตรวจสอบว่าข้อความสองข้อความใช้นันซ์ต่างกัน และแก้ไขข้อผิดพลาดของโพรโทคอลการเข้ารหัสลับด้วยตนเองระหว่างการพัฒนาได้
รูปแบบเอาต์พุตเลขฐานสิบหกของ OpenSSL
OpenSSL แสดงผลแฮชและคีย์ในรูปแบบเฉพาะ ได้แก่ เลขฐานสิบหกตัวพิมพ์เล็ก โดยมีเครื่องหมายทวิภาคคั่นระหว่างคู่ไบต์แต่ละคู่ ตัวอย่างเช่น ค่าแฮช MD5 จะแสดงเป็น "b9:4d:27:b9:93:4d:3e:08:a5:2e:52:d7:da:7d:ab:fa:c4:84:ef:e8"
รูปแบบที่คั่นด้วยเครื่องหมายทวิภาคทำให้มองเห็นไบต์แต่ละตัวแยกจากกันและเปรียบเทียบได้ง่ายขึ้น เครื่องมือแต่ละชนิดอาจแสดงเลขฐานสิบหกโดยไม่มีเครื่องหมายทวิภาคหรือใช้ตัวพิมพ์ใหญ่ แต่ไบต์พื้นฐานยังคงเหมือนกันทุกประการ
เลขฐานสิบหกเทียบกับ Base64 สำหรับข้อมูลใบรับรอง
ใบรับรอง X.509 จัดเก็บในรูปแบบ DER (ไบนารี) หรือรูปแบบ PEM (DER ที่เข้ารหัสด้วย Base64) เลขฐานสิบหกก็ใช้ได้เช่นกัน แต่ Base64 กระชับกว่าเลขฐานสิบหก 33% เนื่องจากอักขระ Base64 แต่ละตัวเข้ารหัสได้ 6 บิต ขณะที่เลขฐานสิบหกเข้ารหัสได้ 4 บิต
สำหรับออบเจ็กต์ขนาดใหญ่ เช่น ใบรับรองและไฟล์ที่เข้ารหัสลับ นิยมใช้ Base64 มากกว่า ส่วนค่าสั้น ๆ เช่น แฮช คีย์ IV และ MAC นิยมใช้เลขฐานสิบหก เพราะแสดงขอบเขตของไบต์ได้โดยตรง
การอ่านข้อมูลดัมป์เลขฐานสิบหก
ข้อมูลดัมป์เลขฐานสิบหกจะแสดงไฟล์หรือบริเวณหน่วยความจำทั้งในรูปไบต์เลขฐานสิบหกและอักขระ ASCII เรียงไว้เคียงข้างกัน คอลัมน์ด้านซ้ายแสดงเลขฐานสิบหก ส่วนด้านขวาแสดง ASCII ที่พิมพ์ได้ (ใช้จุดแทนไบต์ที่พิมพ์ไม่ได้)
การอ่านข้อมูลดัมป์เลขฐานสิบหกเป็นทักษะสำคัญสำหรับการแก้ไขข้อผิดพลาดในการเข้ารหัสลับ การตรวจสอบว่า IV เริ่มต้นที่ออฟเซ็ตที่ถูกต้อง คีย์มีความยาวถูกต้อง หรือคำนำหน้าข้อความเข้ารหัสลับตรงตามที่คาดไว้ ล้วนต้องอาศัยการอ่านข้อมูลดัมป์เลขฐานสิบหก
การเข้ารหัสเป็นเลขฐานสิบหกในส่วนหัวด้านความปลอดภัย
ส่วนหัวด้านความปลอดภัยของ HTTP และโทเค็นการเข้ารหัสลับมักใช้การเข้ารหัสเป็นเลขฐานสิบหก โทเค็น CSRF ตัวระบุเซสชัน และคีย์ API มักแสดงเป็นสตริงเลขฐานสิบหกที่มีความยาว 32-64 อักขระ
โทเค็น CSRF แบบสุ่มขนาด 128 บิต (16 ไบต์) ที่เข้ารหัสเป็นเลขฐานสิบหกจะมีความยาว 32 อักขระ ซึ่งตรวจสอบความถูกต้องได้ง่าย เพียงนับอักขระ ตรวจสอบว่ามีเฉพาะ 0-9 และ a-f และตรวจสอบว่าไม่มีอักขระเติมข้อมูล เพราะอักขระเติมข้อมูลจะบ่งชี้ว่าเป็น Base64 ไม่ใช่เลขฐานสิบหก
แบบทดสอบการแปลงเป็นเลขฐานสิบหก
ทดสอบความเข้าใจเกี่ยวกับการแทนค่าในระบบเลขฐานสิบหก
ประเด็นสำคัญ: เลขฐานสิบหกในวิทยาการเข้ารหัสลับ
เลขฐานสิบหกเข้ารหัสได้ 4 บิตต่ออักขระ ดังนั้น 1 ไบต์ = เลขฐานสิบหก 2 หลัก SHA-256 สร้างอักขระเลขฐานสิบหก 64 ตัว (256 บิต) คีย์ AES-128 มีอักขระเลขฐานสิบหก 32 ตัว และคีย์ AES-256 มีอักขระเลขฐานสิบหก 64 ตัว
เลขฐานสิบหกเป็นรูปแบบมาตรฐานสำหรับแฮชการเข้ารหัสลับ คีย์ IV และนันซ์ เพราะสะท้อนโครงสร้างไบต์ได้โดยตรง OpenSSL และเครื่องมือการเข้ารหัสลับส่วนใหญ่จะแสดงผลและรับค่าที่เข้ารหัสเป็นเลขฐานสิบหก
คำถามที่พบบ่อย
บทเรียน “เลขฐานสิบหกในผลลัพธ์การเข้ารหัสลับ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เลขฐานสิบหกในผลลัพธ์การเข้ารหัสลับ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เลขฐานสิบหกในผลลัพธ์การเข้ารหัสลับ”
เรียนรู้ว่าเหตุใดค่าแฮช กุญแจ และข้อความเข้ารหัสลับจึงมักแสดงด้วยสัญกรณ์เลขฐานสิบหก คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “เลขฐานสิบหกในผลลัพธ์การเข้ารหัสลับ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม
ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การเข้ารหัส Base64: ทำงานอย่างไร
- ASCII, Unicode และการแทนข้อความ
- เลขฐานสิบหกในผลลัพธ์การเข้ารหัสลับ
- การเข้ารหัสกับการเข้ารหัสลับและการทำแฮช