Skip to main content

איך Base64 קידוד עובד

Representing Numbers and Letters with Binary: Crash Course Computer Science #4 (יוני 2026)

Representing Numbers and Letters with Binary: Crash Course Computer Science #4 (יוני 2026)
Anonim

אם האינטרנט הוא כביש המידע, אז הנתיב עבור הדוא"ל הוא ערוץ צר. רק עגלות קטנות מאוד יכולות לעבור.

מערכת התחבורה של הדוא"ל מיועדת לטקסט ASCII רגיל בלבד. מנסה לשלוח טקסט בשפות אחרות או קבצים שרירותיים הוא כמו לקבל משאית דרך הערוץ.

איך משאית גדולה לעבור את ravine?

אז איך אתה שולח משאית גדולה דרך גיא קטן? אתה צריך לקחת אותו לחתיכות בצד אחד, להעביר את החלקים דרך הערוץ, ולבנות מחדש את המשאית מן החלקים בצד השני.

אותו הדבר קורה כאשר אתה שולח קובץ מצורף באמצעות דוא"ל. בתהליך המכונה קידוד הנתונים הבינאריים הופך לטקסט ASCII, אשר ניתן להעביר בדוא"ל ללא בעיות. בסוף הנמען, הנתונים מפוענחים והקובץ המקורי נבנה מחדש.

שיטה אחת של קידוד נתונים שרירותיים כמו טקסט ASCII רגיל הוא Base64. זוהי אחת הטכניקות המועסקים על ידי תקן MIME לשלוח נתונים אחרים מאשר טקסט רגיל.

Base64 כדי להציל את

קידוד Base64 לוקח שלושה בתים, שכל אחד מהם מורכב משמונה סיביות, ומייצג אותם כארבעה תווים להדפסה בתקן ASCII. זה עושה את זה בעצם שני שלבים.

הצעד הראשון הוא להמיר שלושה בתים לארבעה מספרים של שישה סיביות. כל תו בתקן ASCII מורכב משבעה סיביות. Base64 משתמש רק ב- 6 סיביות (המקביל ל -2 ^ 6 = 64 תווים) כדי להבטיח שהנתונים המקודדים ניתנים להדפסה וניתנים לקריאה אנושית. אף אחד מהתווים המיוחדים הזמינים ב- ASCII אינו בשימוש.

64 התווים (ומכאן השם Base64) הם 10 ספרות, 26 תווים קטנים, 26 תווים באותיות רישיות וכן '+' ו- '' '.

לדוגמה, שלושת הבתים הם 155, 162 ו- 233, הזרם המקביל (ומפחיד) הוא 100110111010001011101001, אשר בתורו מתאים לערכים של סיביות 38, 58, 11 ו- 41.

מספרים אלה מומרים לתווי ASCII בשלב השני באמצעות טבלת קידוד Base64. את 6 סיביות ערכים של הדוגמה שלנו לתרגם את רצף ASCII "m6lp".

  • 155 -> 10011011
  • 162 -> 10100010
  • 233 -> 11101001
  • 100110 -> 38
  • 111010 -> 58
  • 001011 -> 11
  • 101001 -> 41
  • 38 -> m
  • 58 -> 6
  • 11 -> L
  • 41 -> p

תהליך דו-שלבי זה מוחל על כל הרצף של בתים המקודדים. כדי לוודא שהנתונים המקודדים יכולים להיות מודפסים כהלכה ואינם חורגים ממגבלת אורך הקו של שרת הדואר, מתווספות תווים חדשים כדי לשמור על אורך שורות מתחת ל -76 תווים. התווים החדשים הם מקודדים כמו כל הנתונים האחרים.

לפתור את Endgame

בסוף תהליך הקידוד, אנו עלולים להיתקל בבעיה. אם את גודל הנתונים המקוריים בבתים הוא מספר של שלושה, הכל עובד בסדר. אם זה לא, אנחנו עלולים בסופו של דבר עם אחד או שני בתים 8 סיביות. עבור קידוד תקין, אנחנו צריכים בדיוק שלושה בתים, עם זאת.

הפתרון הוא לצרף מספיק בתים עם ערך של '0' כדי ליצור קבוצה של 3 בתים. שני ערכים כאלה מצורפים אם יש לנו עוד אחד בתים של נתונים, אחד הוא צירף עבור שני בתים נוספים.

כמובן, אלה מלאכותיים נגרר '0 של לא ניתן לקודד באמצעות שולחן קידוד להלן. הם חייבים להיות מיוצגים על ידי דמות 65.

תו הריפוד Base64 הוא '='. באופן טבעי, הוא יכול להופיע רק בסוף הנתונים המקודדים.

טבלת Base64 קידוד

ערךChar ערךChar ערךChar ערךChar
0א 16ש 32ז 48w
1ב 17R 33ח 49איקס
2ג 18S 34אני 50y
3ד 19T 35י 51z
4ה 20U 36k 520
5F 21אשר 37l 531
6ז 22W 38M 542
7ח 23איקס 39n 553
8אני 24Y 40o 564
9י 25Z 41עמ ' 575
10K 26א 42q 586
11L 27 43ייצור 597
12M 28c 44s 608
13N 29ד 45t 619
14הו 30ה 46u 62+
15עמ ' 31ו 47v 63/