← כל הכלים

קידוד ופענוח Base64

קדדו ופענחו Base64 באופן מיידי בדפדפן. גלו מהו Base64, מדוע הוא מגדיל את הנפח ב-33% ומדוע מדובר בקידוד ולא בהצפנה.

מהו Base64 ולמה הוא קיים

Base64 הוא סכימת קידוד מבינארי לטקסט. הוא לוקח בתים גולמיים - מהסוג שמרכיב תמונות, ארכיונים, מפתחות הצפנה, או כל דבר אחר שאינו טקסט קריא רגיל - וכותב אותם מחדש באמצעות אלפבית קטן ובטוח של 64 תווים ניתנים להדפסה: 26 האותיות הגדולות A-Z, 26 האותיות הקטנות a-z, עשר הספרות 0-9, ושני סמלים נוספים, בדרך כלל + ו-/. סימן שווה משמש לריפוד בסוף. מכיוון שכל תו שהוא מייצר הוא ASCII רגיל, התוצאה יכולה לעבור דרך מערכות שתוכננו רק לטפל בטקסט.

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

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

איך ההמרה פועלת

מבחינה מכנית, Base64 מקבץ את הקלט לנתחים של שלושה בתים - כלומר 24 סיביות - ואז חותך מחדש את אותן 24 סיביות לארבע קבוצות של שש סיביות כל אחת. שש סיביות יכולות לייצג 64 ערכים אפשריים, וזו בדיוק הסיבה שיש לאלפבית 64 תווים. כך שלושה בתים של קלט הופכים תמיד לארבעה תווי פלט. כאשר אורך הקלט אינו כפולה נקייה של שלוש, המקודד מרפד את הקבוצה האחרונה בתו = אחד או שניים, כדי שהמפענח ידע היכן הנתונים האמיתיים מסתיימים.

יחס ארבע-לשלוש הזה הוא גם המקור לתוספת הגודל הידועה לשמצה: פלט Base64 גדול בכ-33% מהנתונים המקוריים. אם הטקסט המקודד עטוף לשורות ברוחב קבוע, כפי שתקני דואר אלקטרוני דורשים לעיתים קרובות, אתם משלמים אחוזים בודדים נוספים על ירידות השורה. התקורה היא מחיר התאימות, ועבור רוב השימושים זו עסקה הוגנת.

היכן נתקלים ב-Base64

ברגע שאתם יודעים למה לחפש, Base64 מופיע בכל מקום במחשוב היומיומי:

  • Data URIs. ניתן להטמיע תמונה או גופן קטנים ישירות ב-HTML או ב-CSS באמצעות כתובת data:, כאשר תוכן הקובץ כתוב כ-Base64. הדפדפן מפענח אותו inline, וחוסך בקשת רשת נפרדת.
  • קבצים מצורפים בדואר אלקטרוני. MIME, התקן שמאפשר לדואר אלקטרוני לשאת קבצים, נשען על Base64 כדי להעביר קבצים בינאריים דרך מערכת דואר שתומכת בטקסט בלבד ללא נזק.
  • אימות HTTP Basic. כותרת ה-Authorization: Basic ... המוכרת היא פשוט שם משתמש וסיסמה מחוברים בנקודתיים ומקודדים ב-Base64 - וזו בדיוק הסיבה שאימות Basic חייב תמיד לרוץ מעל HTTPS.
  • טוקנים ותצורה. JSON Web Tokens, אישורים, מפתחות SSH, וערכי תצורה רבים נשמרים או מועברים כ-Base64 כדי שישרדו העתק-הדבק ואחסון מבוסס טקסט.

קידוד אינו הצפנה

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

לכן Base64 הוא מקום הסתרה גרוע לסיסמאות, מפתחות API, או כל ערך רגיש. אם מחרוזת רק נראית מעורבבת, זה לא הופך אותה למוגנת. הצפנה, לעומת זאת, ממירה נתונים באמצעות מפתח סודי כך שרק מי שמחזיק במפתח יכול לקרוא אותם. השניים פותרים בעיות שונות: הצפנה מגנה על סודיות, Base64 מגן על תאימות. הם משמשים לעיתים קרובות יחד - ייתכן שתצפינו נתונים עם AES ואז תקדדו את הטקסט המוצפן ב-Base64 כדי שיוכל לעבור דרך ערוץ טקסט - אבל האחד לעולם אינו תחליף לשני.

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

קידוד לעומת פענוח

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

להמרות קשורות, ראו את כלי קידוד/פענוח URL שלנו לקידוד אחוזים, או את מפענח ה-JWT כשאתם צריכים לבחון את מקטעי ה-Base64 בתוך טוקן. תמצאו אותם לצד שאר כלי המפתחים שלנו.

שאלות נפוצות

האם Base64 הוא צורה של הצפנה?

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

למה Base64 מגדיל את הנתונים?

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

באילו תווים משתמש Base64?

האלפבית התקני הוא 26 האותיות הגדולות, 26 האותיות הקטנות, הספרות 0 עד 9, בתוספת הסמלים פלוס וקו נטוי, כאשר סימן השווה משמש לריפוד בסוף.

האם אפשר לשמור סיסמאות בבטחה ב-Base64?

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

האם כלי ה-Base64 הזה פרטי?

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

מה ההבדל בין קידוד לפענוח?

קידוד ממיר טקסט או בינארי מקוריים למחרוזת Base64. פענוח עושה את ההפך, והופך מחרוזת Base64 בחזרה לבתים המקוריים המדויקים. אלה פעולות ראי זו לזו.