ฉันไม่ได้รับการเข้ารหัส Base64
ถ้าใครสามารถถอดรหัสสตริง Base64 มันมีจุดประสงค์อะไร?
เหตุใดจึงใช้ HTTP Basic auth
เหมือนกับการบอกคนอื่นว่ารหัสผ่านของฉันกลับเป็น OLLEH
คนที่เห็น OLLEH จะรู้ว่ารหัสผ่านเดิมคือ HELLO
ฉันไม่ได้รับการเข้ารหัส Base64
ถ้าใครสามารถถอดรหัสสตริง Base64 มันมีจุดประสงค์อะไร?
เหตุใดจึงใช้ HTTP Basic auth
เหมือนกับการบอกคนอื่นว่ารหัสผ่านของฉันกลับเป็น OLLEH
คนที่เห็น OLLEH จะรู้ว่ารหัสผ่านเดิมคือ HELLO
คำตอบ:
Base64 ไม่ใช่การเข้ารหัส - เป็นการเข้ารหัส เป็นวิธีการแสดงข้อมูลไบนารีโดยใช้อักขระ (ข้อความ) ที่พิมพ์ได้เท่านั้น
ดูย่อหน้านี้จากหน้าวิกิพีเดียสำหรับ HTTP Basic Authentication :
ในขณะที่การเข้ารหัสชื่อผู้ใช้และรหัสผ่านด้วยอัลกอริทึม Base64 มักจะทำให้พวกเขาไม่สามารถอ่านได้ด้วยตาเปล่า แต่ก็สามารถถอดรหัสได้ง่ายเหมือนกับการเข้ารหัส ความปลอดภัยไม่ใช่เจตนาของขั้นตอนการเข้ารหัส แต่เจตนาของการเข้ารหัสคือการเข้ารหัสอักขระที่ไม่เข้ากันได้กับ HTTP ซึ่งอาจอยู่ในชื่อผู้ใช้หรือรหัสผ่านเป็นอักขระที่เข้ากันได้กับ HTTP
ปกติเรียกว่าการเข้ารหัส base64 ไม่ใช่การเข้ารหัส! สิ่งที่ดีเกี่ยวกับการเข้ารหัส base64 คือช่วยให้คุณสามารถแสดงข้อมูล (ไบนารี) โดยใช้เพียงชุดย่อยที่มีอยู่ซึ่งมีอยู่อย่าง จำกัด ซึ่งมีประสิทธิภาพมากกว่าการเขียนสตริง 1s และ 0s เป็น ASCII
x2
ไบต์ได้มากกว่าสตรีมดั้งเดิมเท่านั้นและ 1s, 0s - ทำให้x8
ไบต์เพิ่มขึ้นหลายเท่า (และ Base64 สร้างx1.3
ข้อมูลมากกว่าอาร์เรย์ไบต์เดิม) ดังนั้นบางครั้งจึงเป็นที่ยอมรับในการเข้ารหัสสตรีมไบนารีเป็นสตริงฐานสิบหกโดยเพิ่มจำนวนไบต์เป็นสองเท่าตัวอย่างเช่นเพื่อเก็บแฮชรหัสผ่านในฐานข้อมูล
En crypt ionต้องการคีย์ (สตริงหรืออัลกอริทึม) เพื่อถอดรหัส ด้วยเหตุนี้ "crypt" (ราก: การเข้ารหัส )
En codไอเอ็นจีปรับเปลี่ยน / กะ / เปลี่ยนแปลงรหัสตัวละครเข้าไปอีก ในกรณีนี้ข้อมูลไบต์ปกติสามารถแสดงและขนส่งได้อย่างง่ายดายโดยใช้ HTTP
ในภาษาประจำวัน "รหัส" เป็นความลับ ในทางวิทยาศาสตร์และวิศวกรรมรหัสเป็นเพียงข้อตกลงชุดของกฎวิธีการเขียนบางสิ่ง
รหัสนั้นอาจเป็นความลับ ในกรณีนี้เรียกว่าการเข้ารหัส แต่โดยทั่วไปรหัสไม่ได้เป็นความลับ รับรหัสพันธุกรรม. มันก็ระบุว่าดีเอ็นเอของเราถูกสร้างขึ้นจากสี่ฐานที่แตกต่างกัน - A
, C
, G
และT
และที่สามฐานนำมารวมกันในรูปแบบหนึ่งในกรดอะมิโน นอกจากนี้ยังมีตารางที่ตัวอักษรสามตัวเป็นกรดอะมิโน
ไม่มีความลับเกี่ยวกับรหัสนี้
ในทำนองเดียวกัน Base64 ไม่ใช่รหัสลับ แต่เป็นรหัสที่อนุญาตให้จัดเก็บข้อมูลในหกบิตต่ออักขระ (ดังนั้นจึงมี 64 เอนทิตีที่แตกต่างกันกล่าวคือ "ฐาน" ของระบบคือ 64 เช่นเดียวกับฐานของระบบฐานสิบของเราคือ 10 เนื่องจากมี 10 เอนทิตีที่แตกต่างกัน เรียกว่า "หลัก")
คุณอาจหมายถึง "Base 64 Encoding" การเข้ารหัสไม่เหมือนกับการเข้ารหัส
การเข้ารหัส Base-64 เป็นส่วนหนึ่งของข้อกำหนด MIME มีความปลอดภัยในการขนส่งเข้ารหัสที่สำหรับข้อมูลที่จะไม่ถูกเคี้ยวถ้า / เมื่อได้รับการถ่ายทอดผ่านโฮสต์ที่ใช้รูปแบบการเข้ารหัสที่แตกต่างจากที่ไคลเอ็นต์ดั้งเดิมใช้
มีโฮสต์ที่แตกต่างกันมากมายใน intertubes และคุณไม่สามารถรองรับสิ่งอื่นใดนอกจาก ASCII แบบ 7 บิตโดยไม่เสี่ยงต่อการสูญหายของข้อมูล / ความสับสน
ตัวอย่างเช่นเมนเฟรมของ IBM ใช้การเข้ารหัสที่เรียกว่า EBCDIC (ซึ่งมีหลายรสชาติที่แตกต่างกัน) จุดรหัสนั้นแตกต่างอย่างสิ้นเชิงกับจุดรหัสที่ใช้โดย 'พเตอร์ที่ใช้ ASCII - ใน ASCII ตัวอักษร AZ คือ 0x41 - 0x5A ใน EBCDIC ตัวอักษร A - Z ไม่ได้อยู่ในช่วงที่อยู่ติดกัน: ตัวอักษร AI อยู่ที่ 0xC1 - 0xC9 ตัวอักษร JR อยู่ที่ 0xD1 - 0xD9 และตัวอักษร SZ อยู่ที่ 0xE2 - 0xE9
ตามค่าเริ่มต้นพารามิเตอร์ฟิลด์ส่วนหัวของข้อความในข้อความ Hypertext Transfer Protocol (HTTP) ไม่สามารถนำอักขระนอกชุดอักขระ ISO- 8859-1
หากชื่อผู้ใช้และรหัสผ่านมีชุดอักขระที่เข้ากันไม่ได้มากกว่า HTTP จะไม่สามารถส่งข้อความเหล่านั้นได้ เพื่อป้องกันไม่ให้เราเข้ารหัสชื่อผู้ใช้และรหัสผ่านด้วย base64 เพื่อให้แน่ใจว่าเรากำลังส่งถ่านที่เข้ากันได้กับ HTTP ผ่าน HTTP สำหรับข้อมูลเพิ่มเติมโปรดดูBasic_access_authenticationนี้