26 กรกฎาคม 2551

วิธีการเข้าและถอดรหัสด้วย BASE64 By UserMode

http://www.thaishadow.com/board/index.php 1
วิธีการเข้าและถอดรหัสด้วย BASE64 By UserMode
วิธีการเข้าและถอดรหัสด้วย BASE64 By UserMode
BASE64 คือการเข้ารหัสข้อมูล String ชุดหนึ่ง ให้เป็นข้อมูล String อีกชุดหนึ่งซึ่งทำให้มีความหมายเปลียน
ไปหรือให้อ่านไม่รู้เรื่อง
การเข้ารหัสด้วย BASE64
เริ่มลงมือกันเลยแล้วกันน่ะครับ
สมมุติว่าเราต้องการจะเข้ารหัสคำว่า ThaiShadow
1.ให้เราทำการแปลงค่า String ที่ได้มาเป็นเลขฐาน 2 เสียก่อน โดยสามารถใช้โปรแกรม Editplus และ Calculator ใน
การช่วยแปลงค่าก็ได้ครับ
ส่วนเลขฐาน 2 ที่ได้มาให้เราทำการเติม 0 ใส่ไปข้างหน้าให้ครบ 8 ตัว รวมกับของเดิมที่มีอยู่
String เลขฐาน 10 เลขฐาน 2
T 84 01010100
h 104 01101000
a 97 01100001
i 105 01101001
S 83 01010011
h 104 01101000
a 97 01100001
d 100 01100100
o 111 01101111
w 119 01110111
2. .ให้เรานำเลขฐาน 2 ทั้งหมดมาต่อกัน แล้วตัดออกเป็นช่วงๆ ช่วงล่ะ 6 ตัวหรือ 6 bit จนกว่าจะครบทั้งหมด
010101 000110 100001 100001 011000 010101 0011xx xxxxxx xxxxxx
ในตัวอย่างนี้เราจะเห็นว่าชุดสุดท้ายเหลือเพียง 2 ตัวเท่านั้น เราต้องทำการเติม 0 ต่อท้ายไปให้ครบ 6ตัว
xxxxxx xxxxxx 011101 1100000
http://www.thaishadow.com/board/index.php 2
วิธีการเข้าและถอดรหัสด้วย BASE64 By UserMode
3. พอข้อมูลที่เราได้มาครบแล้ว ก็เริ่มทำการเข้ารหัส โดยใช้ BASE64 Table สามารถดูได้จาก
http://www.faqs.org/rfcs/rfc3548.html อยู่ตรง Table 1: The Base 64 Alphabet ในหัวข้อที่ 3. Base 64 Encoding
ครับ
เลขฐาน 2 เลขฐาน 10 String
010101 21 V
000110 6 G
100001 33 h
100001 33 h
011010 26 a
010101 21 V
001101 13 N
101000 40 o
011000 24 Y
010110 22 W
010001 17 R
101111 47 v
011101 29 d
110000 48 w
แล้วเราจึงนำข้อมูลทั้งหมดมาต่อกัน จะได้เป็น VGhhaVNoYWRvdw
แต่เราได้ทำการเพิ่ม 0 ไป 4 ตัว ที่ชุดสุดท้าย ฉะนั้นเราต้อง เพิ่มตัว = ต่อท้าย String ไป 2 ตัว
Tip กรณีการเอา “ = ” มาต่อท้าย ชุดที่เราทำการเข้ารหัส
ถ้าหากว่าชุดสุดท้ายของเราไม่มีการเติ่ม 0 ก็ไม่ต้องเติม “ = ” ต่อท้ายลงไป
ถ้าชุดสุดท้ายหากมีเติม 0 ลงไป 2 ตัว ก็ให้เพิ่ม “ = ” ลงไป 1 ตัว
แต่ถ้าชุดสุดท้ายหากมีเติม 0 ลงไป 4 ตัวก็ให้เพิ่ม “ = ” ลงไป 2 ตัว
ฉะนั้นคำว่า ThaiShadow ถ้าเราทำการเข้ารหัสด้วย BASE64 จะได้เป็น VGhhaVNoYWRvdw==
http://www.thaishadow.com/board/index.php 3
วิธีการเข้าและถอดรหัสด้วย BASE64 By UserMode
การถอดรหัสด้วย BASE64
สมมุตว่าเราจะทำการถอดรหัส คำว่า VGhhaVNoYWRvdw== คุ้นๆเปล่า
1.ให้เราใช้ตาราง BASE64 Table เดิมช่วย ที่อยู่และตำแหน่งเดิม มาเริ่มกันเลยดีกว่า แต่ไม่ต้องแปลงเครื่องหมาย “ = ”
ในกรณีที่แปลงเป็นเลขฐาน 2 ถ้าหากว่าชุดไหนไม่ครบ 6 ตัวให้เราทำการใส่ 0 ไปข้างหน้าให้ครบ 6 ตัว
String Value เลขฐาน 2
V 21 010101
G 6 000110
h 33 100001
h 33 100001
a 26 011010
V 21 010101
N 13 001101
o 40 101000
Y 24 011000
W 22 010110
R 17 010001
v 47 101111
d 29 011101
w 48 110000
2. .ให้นำเอาเลขฐาน 2 ทั้งหมดมาต่อเรียงกัน แล้วแบ่งเป็นช่วงๆ ช่วงล่ะ 8 ตัวหรือ 8 bit จนกว่าจะครบ
แต่ในกรณีที่มีเครื่องหมาย “ = ” ให้เราดูว่ามีเครื่องหมาย “ = ” กี่ตัว ถ้าหากว่ามี 1 ตัวก็ให้เราตัดเลข 2 ตัวสุดท้ายทิ้งไป
หรือถ้าหากว่ามีเครื่องหมาย “ = ” อยู่ 2 ตัวก็ให้ตัดตัวเลข 4 ตัวสุดท้ายออกไป
ในตัวอย่างนี้เรามีเครื่องหมา “ = ” อยู่ 2 ตัวเราจึงต้องตัดตัวเลข 4 ตัวสุดท้ายออก คือ 0000
01010100 01101000 01100001 xxxxxxxx xxxxxxxx ………. xxxxxxxx 01101111 01110111
เลขฐาน 2 เลขฐาน 10 String
01010100 84 T
01101000 104 h
01100001 97 a
01101001 105 i
01010011 83 S
01101000 104 h
01100001 97 a
01100100 100 d
01101111 111 o
01110111 119 w
http://www.thaishadow.com/board/index.php 4
วิธีการเข้าและถอดรหัสด้วย BASE64 By UserMode
ให้เรานำตัว String ทั้งหมดมาต่อกัน ก็จะได้ คำว่า ThaiShadow จบสิ้นขบวนการการถอดรหัสด้วย BASE64
ความจิงแล้ว PHP มี function ที่สามารถทำการเข้าและถอดรหัสด้วย BASE 64 อยู่แล้วครับ
base64_encode(“String”) สำหรับเข้ารหัส
base64_decode(“String”) สำหรับถอดรหัส
เรามาตรวจสอบการถอดรหัสที่เราได้เข้ารหัสมาเองด้วยมันสมองอันน้อยนิดของเรากันดีกว่าครับ
Code PHP
$str = 'VGhhaVNoYWRvdw==';
echo base64_decode($str);
?>
ผลลัพธ์ คือ
ThaiShadow
บทความนี้ได้อ้างอิงจาก http://www.faqs.org/rfcs/rfc3548.html
จบการนำเสนอ

ไม่มีความคิดเห็น: