מקודד מפענח Base64 - כלי המרת Base64 מקוון חינמי
כלי מקודד מפענח base64 חינמי. המר טקסט ל-Base64 או פענח מחרוזות Base64 באופן מיידי. תומך בקידוד סטנדרטי ובטוח לכתובת URL. ללא צורך בהתחברות.
מקודד/מפענח Base64
המר טקסט לקידוד Base64 וההפך
תיעוד
מהו קידוד Base64?
Base64 הוא דרך להפוך כל נתון, כולל נתונים בינאריים כמו תמונות, לטקסט פשוט המורכב רק מאותיות, ספרות וכמה סמלים. מקודד Base64 מקודד נתונים לצורת טקסט זו. מפענח Base64 מפענח אותם וחוזר לנתונים המקוריים. תוכניות משתמשות ב-Base64 כדי להעביר נתונים בינאריים בבטחה דרך מערכות, כגון דואר אלקטרוני או JSON, המצפות לטקסט פשוט.
Base64 משתמשת באלפבית המונה 64 תווים:
- אותיות רישיות A–Z (26 תווים)
- אותיות קטנות a–z (26 תווים)
- ספרות 0–9 (10 תווים)
- שני סמלים, בדרך כלל
+ו-/(2 תווים)
מערכות מסוימות משתמשות גם בסימן שוויון (=) בסוף הפלט לצורכי ריפוד. הריפוד אינו חלק מאלפבית בן 64 התווים; הוא רק משלים את האורך.
מדוע Base64 קיימת
פרוטוקולי טקסט ישנים רבים, כולל דואר אלקטרוני (SMTP) וחלקים מסוימים של HTTP, נבנו להעברת טקסט ASCII בן 7 סיביות. הם עלולים להשחית בתים בינאריים גולמיים, כגון הבתים שבתוך תמונת JPEG. Base64 עושה זאת באמצעות ייצוג של כל בית בתווים בטוחים וניתנים להדפסה בלבד. לכן קבצים מצורפים בדואר אלקטרוני, תמונות המוטמעות בדפי אינטרנט ושדות בינאריים בתוך JSON עוברים בדרך כלל תחילה דרך Base64.
Base64 אינה דחיסה ואינה הצפנה. הפלט המקודד תמיד גדול יותר מהקלט, וכל אחד יכול לפענח אותו ללא סיסמה או מפתח.
כיצד להשתמש בכלי הזה
- הקלידו או הדביקו טקסט בתיבת הקלט.
- בחרו ב-"קידוד ל-Base64" כדי להמיר טקסט ל-Base64, או ב-"פענוח מ-Base64" כדי להמיר מחרוזת Base64 בחזרה לטקסט.
- הפעילו המרה בזמן אמת כדי שהפלט יתעדכן אוטומטית במהלך ההקלדה.
- העתיקו את התוצאה באמצעות לחצן ההעתקה.
הכלי קורא וכותב טקסט Unicode תקני, ולכן אותיות עם סימנים דיאקריטיים, סמלים ואימוג'י מקודדים ומפוענחים כראוי, ולא רק אותיות אנגליות פשוטות.
כיצד פועל קידוד Base64
Base64 הופך כל 3 בתי קלט (24 סיביות) ל-4 תווי פלט (שכל אחד מהם מכיל 6 סיביות), משום ש-24 חלקי 6 שווה 4.
- לוקחים את בתי הקלט וכותבים אותם בצורה בינארית.
- מקבצים את הסיביות לקבוצות של 24 סיביות (3 בתים).
- מחלקים כל קבוצה של 24 סיביות לארבעה חלקים בני 6 סיביות.
- מאתרים כל מספר בן 6 סיביות (מ-0 עד 63) באלפבית Base64 וכותבים את התו המתאים.
אם אורך הקלט אינו כפולה של 3, הקבוצה האחרונה קצרה. המקודד מרפד אותה בסיביות אפס, ואז מוסיף תווי = לפלט, כך שהתוצאה עדיין מתקבלת בקבוצות של 4:
- בית אחד שנותר מפיק 2 תווי Base64 ובנוסף
==. - שני בתים שנותרו מפיקים 3 תווי Base64 ובנוסף תו
=אחד.
דוגמה לקידוד Base64
קידוד המילה "Hello":
- ערכי ASCII: 72, 101, 108, 108, 111
- בינארי:
01001000 01100101 01101100 01101100 01101111 - 3 הבתים הראשונים (24 סיביות) מחולקים לארבע קבוצות בנות 6 סיביות:
010010 000110 010101 101100, שהן המספרים 18, 6, 21, 44 → התוויםS,G,V,s. - 2 הבתים הנותרים (16 סיביות) מחולקים לשלוש קבוצות בנות 6 סיביות, ובסוף מתווספות 2 סיביות אפס:
011011 000110 111100, שהן המספרים 27, 6, 60 → התוויםb,G,8. - מכיוון שנותרו 2 בתים, מתווסף
=אחד בסוף. - תוצאה:
SGVsbG8=
הפענוח הופך את השלבים האלה: כל תו ממופה בחזרה למספר בן 6 סיביות, הסיביות מחוברות לזרם, והזרם נקרא מחדש בבתים בני 8 סיביות.
נוסחה לחישוב אורך מקודד ב-Base64
עבור קלט באורך n בתים, האורך המקודד בתווים הוא:
encoded_length = 4 × ⌈n / 3⌉
כאשר ⌈x⌉ פירושו עיגול כלפי מעלה למספר השלם הקרוב ביותר. הנוסחה מסבירה מדוע פלט Base64 גדול תמיד בכשליש מהקלט: 4 תווי פלט לכל 3 בתי קלט הם גידול של 33%.
היכן משתמשים ב-Base64
- קבצים מצורפים בדואר אלקטרוני (MIME). הדואר האלקטרוני נבנה עבור טקסט, ולכן קבצים מצורפים מומרים ל-Base64 לפני השליחה, מה שהופך את הקובץ המצורף לגדול בכ-33% מהמקור.
- URI של נתונים. ניתן להטמיע תמונות קטנות ישירות בתוך HTML או CSS כטקסט, למשל
data:image/png;base64,iVBORw0KGgo..., וכך להימנע מבקשה נפרדת לקובץ. הדבר מתאים בעיקר לקבצים קטנים, משום שקבצים גדולים מנפחים את הדף ואי אפשר לשמור אותם במטמון בנפרד. - ממשקי API ו-JSON. ל-JSON אין דרך מובנית להחזיק נתונים בינאריים גולמיים, ולכן קבצים בינאריים הנשלחים דרך API של JSON מקודדים לעיתים קרובות תחילה ב-Base64.
- אימות HTTP Basic. הכותרת
Authorizationמקודדת שם משתמש וסיסמה כ-Base64, למשלAuthorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=. הדבר אינו מאובטח בפני עצמו; כל מי שמיירט את פרטי האימות יכול לקרוא אותם, ולכן יש להשתמש באימות Basic רק דרך HTTPS. - אסימוני אינטרנט מסוג JSON (JWT). כל אחד משלושת החלקים של JWT מקודד באמצעות Base64URL, גרסה בטוחה לשימוש בתוך כתובת URL.
- אחסון נתונים בינאריים כטקסט. מסדי נתונים או קובצי תצורה המקבלים טקסט בלבד מכילים לפעמים נתונים בינאריים כמחרוזת Base64.
Base64 בהשוואה לקידודים אחרים
Base64 בטוח לכתובות URL מחליף את התווים הסטנדרטיים + ו-/ בתווים - ו-_, משום של-+ ול-/ יש משמעות מיוחדת בתוך כתובת URL. משתמשים בו עבור JWT, פרמטרים של שאילתות URL ושמות קבצים. כלי זה מפיק פלט Base64 סטנדרטי; המרה לצורה הבטוחה לכתובות URL דורשת רק החלפה של שני התווים האלה.
Base32 משתמשת באלפבית בן 32 תווים, ולכן כל תו מכיל 5 סיביות במקום 6. היא ממירה כל 5 בתים ל-8 תווים, עם תקורה של 60% (8 ÷ 5 = 1.6), בהשוואה ל-33% עבור Base64. בוחרים ב-Base32 כאשר הפלט צריך להיות מוקלד ידנית או מוקרא בטלפון, משום שהיא נמנעת מאותיות המובחנות לפי רישיות ומתווים שקל לבלבל ביניהם.
הייצוג ההקסדצימלי משתמש ב-16 תווים (0–9, A–F) ודורש 2 תווים לכל בית, ובכך מכפיל את הגודל (תקורה של 100%). משתמשים בו לעיתים קרובות להצגת גיבובים, צבעים וכתובות MAC, שבהם קריאות חשובה יותר מגודל קומפקטי.
מתי לא להשתמש ב-Base64
Base64 מוסיפה עלות מבחינת נפח ומעבד, ולכן אינה מתאימה לקבצים גדולים הנשלחים ברשת; שליחה ישירה של הנתונים הבינאריים הגולמיים צורכת פחות מקום ומהירה יותר. אסור להסתמך עליה להסתרת מידע רגיש כגון סיסמאות או מפתחות API, משום שפענוחה אינו דורש סוד. לאחסון קבצים גדולים, בדרך כלל עדיף להשתמש בסוג עמודה בינארי במסד נתונים או בשירות אחסון קבצים, ולא במחרוזת Base64 ארוכה בשדה טקסט.
טעויות נפוצות
- דילוג על המרה ל-UTF-8. קידוד טקסט עם אותיות בעלות סימנים דיאקריטיים או אימוג'י בלי להמיר תחילה לבתי UTF-8 עלול להשחית את הפלט.
- הסרת הריפוד. מערכות מסוימות מסירות את תווי
=שבסוף. רוב המפענחים עדיין יכולים לפעול אם אורך המחרוזת מושלם מחדש לכפולה של 4, אך לא כולם מקבלים זאת, ולכן בטוח יותר להשאיר את הריפוד. - מעברי שורה שנותרו. מקודדים ישנים המבוססים על MIME מוסיפים מעבר שורה כל 76 תווים; רוב המפענחים המודרניים מצפים למחרוזת רציפה אחת ללא מעברי שורה.
- בלבול בין גרסאות. Base64 סטנדרטית ו-Base64 בטוחה לכתובות URL משתמשות בתווים שונים עבור אותם שני מיקומים באלפבית; פענוח באמצעות הגרסה הלא נכונה מפיק ג'יבריש או שגיאה.
שאלות נפוצות
האם Base64 היא סוג של הצפנה? לא. זהו קידוד טקסט הפיך, לא הצפנה. כל אחד יכול לפענח מחרוזת Base64 מיד, ללא סיסמה. אם הנתונים צריכים להישאר סודיים, יש להשתמש באלגוריתם הצפנה כגון AES.
מדוע Base64 מגדילה את הנתונים? משום שהיא מקדישה תו מלא אחד לנשיאת 6 סיביות בלבד, בעוד שבית גולמי מכיל 8 סיביות. המרת 3 בתים (24 סיביות) ל-4 תווים פירושה שהפלט הוא 4/3, כלומר גדול בכ-33% מהקלט.
האם Base64 יכולה לקודד תמונות וקבצים בינאריים אחרים? כן. כל קובץ בינארי, כולל תמונות, קובצי PDF ושמע, ניתן לקידוד ב-Base64 ולפענוח בחזרה בית אחר בית. השימוש הנפוץ הוא בתמונות קטנות המוטמעות ב-HTML או ב-CSS, אך זו בחירה גרועה עבור קבצים גדולים.
מה ההבדל בין Base64 ל-Base64URL?
Base64URL מחליפה את התווים הסטנדרטיים + ו-/ בתווים - ו-_, כך שהתוצאה בטוחה לשימוש בתוך כתובת URL או שם קובץ בלי צורך בקידוד נוסף. JWT משתמשים ב-Base64URL מסיבה זו.
מדוע מחרוזת ה-Base64 שלי גורמת לשגיאת "invalid" בעת הפענוח?
הסיבות הנפוצות ביותר הן תווים שאינם שייכים לאלפבית Base64, כגון - ו-_ המשמשים בגרסה הבטוחה לכתובות URL, או מחרוזת שאורכה גדול באחד מכפולה של 4. אין מחרוזת Base64 תקינה באורך כזה. הפענוח נכשל גם כאשר הבתים המפוענחים אינם טקסט UTF-8 תקין. כלי זה מתעלם מרווחים וממעברי שורה בתוך המחרוזת, ועדיין מפענח מחרוזת שהריפוד = שבסופה הוסר.
מה מקורו של Base64? הטכניקה מתוארכת לשיטות מוקדמות לשליחת נתונים בינאריים דרך מערכות דואר המוגבלות לטקסט בשנות ה-1980, והיא תוקננה רשמית כחלק מ-MIME ב-RFC 2045 בשנת 1996. מפרט הייחוס הנוכחי עבור Base64, Base32 ו-Base16 הוא RFC 4648.