Base64 เป็นหนึ่งในวิธีการเข้ารหัสที่พบบ่อยที่สุดในเครือข่ายสำหรับการส่งรหัสไบต์ 8 บิต คุณสามารถตรวจสอบ RFC2045 ~ RFC2049 ซึ่งมีข้อมูลจำเพาะ MIME โดยละเอียด การเข้ารหัส BASE64 สามารถใช้เพื่อส่งข้อมูลการระบุตัวตนที่ยาวขึ้นในสภาพแวดล้อม HTTP ตัวอย่างเช่นในระบบ Hibernate Java Persistence, Base64 ใช้เพื่อเข้ารหัสตัวระบุที่ไม่ซ้ำกันยาว (โดยปกติจะเป็น uuid 128 บิต) ลงในสตริงซึ่งใช้เป็นพารามิเตอร์ในรูปแบบ HTTP และ HTTP รับ URL ในแอปพลิเคชันอื่น ๆ มักจะจำเป็นต้องเข้ารหัสข้อมูลไบนารีลงในรูปแบบที่เหมาะสมสำหรับการจัดวางใน URL (รวมถึงฟิลด์ฟอร์มที่ซ่อนอยู่)
ในเวลานี้การเข้ารหัส Base64 ไม่เพียง แต่สั้น แต่ยังไม่สามารถอ่านได้นั่นคือข้อมูลที่เข้ารหัสจะไม่ถูกมองเห็นโดยตรงด้วยตาเปล่า
มีหลายวิธีในการเข้ารหัส Java ตอนนี้ฉันจะแบ่งปัน วิธีการเข้ารหัส Base64 กับคุณ
แพ็คเกจ com.crypt; นำเข้า sun.misc.base64decoder; นำเข้า sun.misc.base64encoder;/** * base64 การเข้ารหัสและการถอดรหัส * @author yuanwei */คลาสสาธารณะ base64 {/** * decrypt * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * base64decoder ()). decodeBuffer (คีย์); } / ** * การเข้ารหัส base64 * * @param คีย์ * @return * @throws Exception * / String String สาธารณะ EncryptBase64 (BYTE [] คีย์) โยนข้อยกเว้น {return (ใหม่ base64Encoder ()). encodebuffer (คีย์); -ทำไมต้องใช้การเข้ารหัส Base64?
บทบาทของการเข้ารหัส Base64: เนื่องจากบางระบบสามารถใช้อักขระ ASCII เท่านั้น Base64 เป็นวิธีที่ใช้ในการแปลงข้อมูลจากอักขระที่ไม่ใช่ ASCII เป็นอักขระ ASCII มันใช้อักขระและการเข้ารหัสที่ใช้ในตารางด้านล่าง
นอกจากนี้ Base64 ยังเหมาะอย่างยิ่งสำหรับการส่งข้อมูลอย่างรวดเร็วภายใต้โปรโตคอล HTTP และ MIME
Base64 ไม่ใช่อัลกอริทึมการเข้ารหัสและถอดรหัสในสนามรักษาความปลอดภัย แม้ว่าบางครั้งคุณมักจะเห็นการเข้ารหัส Base64 และการถอดรหัส ในความเป็นจริง BASE64 สามารถถือได้ว่าเป็นอัลกอริทึมการเข้ารหัสเท่านั้นเข้ารหัสเนื้อหาข้อมูลที่เหมาะสมสำหรับการส่ง แม้ว่าข้อความต้นฉบับจะกลายเป็นรูปแบบตัวละครที่ไม่สามารถมองเห็นได้หลังจากการเข้ารหัส Base64 แต่วิธีนี้เป็นพื้นฐานและเรียบง่ายมาก
วิธีการเข้ารหัส BASE64 จำเป็นต้องมีการแปลงทุก ๆ สามไบต์ 8 บิตเป็นสี่ไบต์ 6 บิต ในหมู่พวกเขาทุก ๆ 6 บิตที่ถูกต้องของสี่ไบต์หลังจากการแปลงเป็นข้อมูลที่ถูกต้องและบิตสำรองทั้งสองจะเสริมด้วย 0 เพื่อเป็นหนึ่งไบต์ ดังนั้นข้อมูลซ้ำซ้อนที่เกิดจาก Base64 จึงไม่ร้ายแรงมากนัก Base64 เป็นวิธีการเข้ารหัสยอดนิยมในปัจจุบันเพราะมันรวดเร็วและง่ายต่อการเขียนโค้ด
เสริมความรู้:
มาตรฐาน BASE64 ไม่เหมาะสำหรับการส่งโดยตรงใน URL เนื่องจากตัวเข้ารหัส URL จะเปลี่ยนอักขระ "/" และ "+" ใน BASE64 มาตรฐานเป็นรูปแบบเช่น "%xx" และตัวเลข "%" เหล่านี้จำเป็นต้องได้รับการแปลงเมื่อเก็บไว้ในฐานข้อมูล
เพื่อแก้ปัญหานี้สามารถใช้การเข้ารหัส Base64 สำหรับ URL ได้ มันไม่ได้กรอกหมายเลข '=' ในตอนท้ายและเปลี่ยน "+" และ "/" ในมาตรฐาน base64 เป็น "*" และ "-" ตามลำดับซึ่งจะช่วยลดการแปลงที่จำเป็นในระหว่างการเข้ารหัส URL และการถอดรหัสและการจัดเก็บฐานข้อมูล
มีตัวแปร Base64 ที่ได้รับการปรับปรุงอีกอย่างสำหรับการแสดงออกปกติซึ่งเปลี่ยนแปลง "+" และ "/" ถึง "!" และ "-" เพราะ "+", "*" และ "[" และ "]" ที่ใช้ใน IRCU อาจมีความหมายพิเศษในการแสดงออกปกติ
นอกจากนี้ยังมีตัวแปรบางอย่างที่เปลี่ยน "+/" เป็น "_-" หรือ "._" (ใช้เป็นชื่อตัวระบุในภาษาการเขียนโปรแกรม) หรือ ".-" (ใช้สำหรับ nmtoken ใน XML) หรือแม้แต่ "_:" (ใช้สำหรับชื่อใน XML)
BASE64 ต้องการการแปลงทุก ๆ สามไบต์ 8 บิตเป็นสี่ไบต์ 6 บิต (3*8 = 4*6 = 24) จากนั้นเพิ่มสอง 0S สูงถึง 6 บิตเพื่อสร้างสี่ไบต์ 8 บิต กล่าวคือสตริงที่แปลงแล้วจะยาวกว่าสายเดิม 1/3
ข้างต้นคือทั้งหมดเกี่ยวกับ BASE64 และ BASE64 การเข้ารหัสและอัลกอริทึมการถอดรหัส ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเข้ารหัสการเรียนรู้และการถอดรหัสของทุกคน