מקודד Base64 / מפענח Base64 אונליין

0 chars
0 chars

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

עובדים עם תמונות?
אם הקוד שלכם מתחיל ב-data:image/png... או שאתם רוצים להמיר קובץ לטקסט, כלי זה יציג לכם רק תווים חסרי משמעות. השתמשו בכלי הייעודי שלנו להמרה לתמונה.

איך עובד פורמט Base64?

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

טקסט רגיל במחשב מאוחסן ב-8 ביטים (1 בייט). עם זאת, Base64 משתמש ב”אלפבית” של 64 תווים (A-Z, a-z, 0-9, +, /). מכיוון ש-2^6 = 64, תו Base64 אחד מייצג בדיוק 6 ביטים של מידע.

תהליך ההמרה (אלגוריתם):

  1. נלקחים שלושה תווים מהטקסט שלכם (3 × 8 ביטים = 24 ביטים).
  2. 24 הביטים הללו מחולקים לארבע קבוצות של 6 ביטים כל אחת.
  3. לכל קבוצה מוקצה תו מטבלת Base64.

השלכה: מכיוון שאנו הופכים 3 תווים ל-4 תווים, מחרוזת ה-Base64 המתקבלת תמיד ארוכה בכ-33% מהטקסט המקורי.

בעיית קידוד תווים: למה ממירי Base64 רגילים משבשים עברית / UTF-8?

אם אי פעם ניסיתם לקודד מילה כמו “שלום” (או “Kůň” בעברית לדוגמה) בקונסולת הדפדפן באמצעות הפונקציה btoa('שלום'), סביר להניח שקיבלתם שגיאה: String contains characters outside of the Latin1 range.

Base64 תוכנן במקור עבור תווים של ASCII ב-7 ביטים. עם זאת, עברית, אמוג’י וסמלים מיוחדים אחרים (UTF-8) תופסים יותר בתים בזיכרון (תווים מרובי-בתים).

  • האות a = 1 בייט.
  • האות ש = 2 בתים (ב-UTF-8).
  • אמוג’י 🚀 = 4 בתים.

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

היכן נעשה שימוש בקידוד טקסט Base64?

בעוד שתמונות ב-Base64 משמשות בעיקר להטמעה ב-CSS/HTML, ל-Base64 טקסטואלי יש שימושים שונים לחלוטין במערכות בקאנד:

1. אימות בסיסי HTTP (HTTP Basic Authentication)

כאשר אתם מתחברים ל-API, הכותרת לרוב נראית כך: Authorization: Basic dXppdmF0ZWw6aGVzbG8= מאחורי קוד זה מסתתר שם משתמש וסיסמה פשוטים בפורמט משתמש:סיסמה. הכלי שלנו יאפשר לכם ליצור או לבדוק כותרות אלה בקלות.

2. אסימוני אינטרנט JSON (JSON Web Tokens - JWT)

יישומי ווב מודרניים משתמשים ב-JWT להתחברות. אסימון כזה נראה כמו שלוש מחרוזות ארוכות המופרדות בנקודה. חלק הנתונים (Payload) הוא אובייקט JSON רגיל המקודד ב-Base64.

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

3. קובצי תצורה (סודות Kubernetes)

פלטפורמות כמו Kubernetes מאחסנות נתונים סודיים (Secrets) בקובצי YAML תצורה בפורמט Base64. זו אינה הצפנה, אלא דרך לשמור נתונים בינאריים או טקסט עם תווים בעייתיים (שורות חדשות, מירכאות) בקובץ טקסט.

מהו “קידוד Base64 בטוח לכתובות אתרים (URL Safe)” ולמה זה חשוב?

האלפבית הסטנדרטי של Base64 כולל את התווים + (פלוס) ו-/ (קו נטוי). לשני תווים אלה יש משמעות מיוחדת בכתובות אתרים (URL):

  • / מפריד ספריות.
  • + לרוב מפורש כרווח.

אם הייתם שולחים Base64 סטנדרטי בפרמטר URL (לדוגמה, site.com?token=ab/cd+ef), השרת עלול לקרוא את הנתונים באופן שגוי.

הפתרון (מצב בטוח לכתובות אתרים): המתג שלנו מפעיל את גרסת Base64URL (לפי RFC 4648), המבצעת את השינויים הבאים:

  • + משתנה ל-- (מקף).
  • / משתנה ל-_ (קו תחתון).
  • בסוף, סימני = (ריפוד) מוסרים, מכיוון שהם אינם נחוצים ב-URL.

מיתוס: Base64 אינו הצפנה!

חשוב להבין את ההבדל המהותי שמתחילים מבלבלים לעיתים קרובות:

  1. קידוד (Encoding - Base64): משמש להעברת נתונים. זה כמו לארוז פריט במזוודה כדי שלא ישבר בדרך. כל מי שמוצא את המזוודה יכול לפתוח אותה (לפענח) ולראות את התוכן. זה לא בטוח עבור נתונים סודיים.
  2. הצפנה (Encryption - AES, RSA): נועלת נתונים עם מפתח. ללא המפתח לא ניתן לגשת לתוכן.
  3. גיבוב (Hashing - SHA, MD5): תהליך חד-כיווני (לדוגמה, לאחסון סיסמאות). לא ניתן לקבל את הטקסט המקורי מהתוצאה.

אם אתם צריכים לשלוח סיסמה או נתון רגיש, Base64 לבדו אינו מספיק. עליכם להשתמש ב-HTTPS (SSL/TLS), אשר יצפין את ההעברה.


שאלות נפוצות (FAQ)

מהם סימני "=" בסוף המחרוזת? זהו מה שנקרא "ריפוד" (padding). מכיוון ש-Base64 מקודד נתונים בקבוצות של 3 תווים, ייתכן שאורך הטקסט המקורי אינו מתחלק בשלוש. סימני `=` מתווספים בסוף כדי שהמפענח ידע כמה ביטים להתעלם בסיום.
למה הטקסט המפוענח נראה כמו "ג'יבריש"? כנראה שאתם מנסים לפענח נתונים שאינם טקסט. אם מחרוזת ה-Base64 מייצגת קובץ דחוס (ZIP), תמונה או נתונים מוצפנים, המרה לטקסט (UTF-8) אינה הגיונית. נסו לברר את מקור הנתונים.
האם הכלי עובד במצב לא מקוון (אופליין)? כן. כל לוגיקת ההמרה כתובה ב-JavaScript ופועלת ישירות בדפדפן שלכם. לאחר שהדף נטען, תוכלו להתנתק מהאינטרנט והכלי עדיין יעבוד. הנתונים שלכם אינם נשלחים לשום מקום.