Utilia

Κωδικοποίηση και αποκωδικοποίηση Base64

Δωρεάν κωδικοποίηση και αποκωδικοποίηση Base64 με πλήρη υποστήριξη UTF-8 και επιλογή base64url. Λειτουργεί στο πρόγραμμα περιήγησής σας.

Πώς να χρησιμοποιήσετε την κωδικοποίηση και αποκωδικοποίηση Base64

  1. Επιλέξτε αν θέλετε Κωδικοποίηση κειμένου σε Base64 ή Αποκωδικοποίηση από Base64 πίσω σε κείμενο.
  2. Πληκτρολογήστε ή επικολλήστε το κείμενό σας στο πλαίσιο εισόδου. Υποστηρίζονται τονισμένα γράμματα, ελληνικά και άλλα μη λατινικά αλφάβητα, καθώς και emoji.
  3. Αν το αποτέλεσμα θα χρησιμοποιηθεί σε URL, σε όνομα αρχείου ή σε JSON Web Token, ενεργοποιήστε την επιλογή Ασφαλές για URL (base64url) για να πάρετε την παραλλαγή base64url.
  4. Διαβάστε το αποτέλεσμα και αντιγράψτε το. Αν αποκωδικοποιείτε και η είσοδος δεν είναι έγκυρο Base64, εμφανίζεται μήνυμα σφάλματος αντί για ακατάληπτους χαρακτήρες.

Τι είναι το Base64;

Το Base64 είναι ένας τρόπος αναπαράστασης τυχαίων byte με μόλις 64 εκτυπώσιμους χαρακτήρες ASCII: τα κεφαλαία γράμματα A–Z, τα πεζά a–z, τα ψηφία 0–9 και τα δύο σύμβολα + και /. Ο χαρακτήρας = χρησιμοποιείται ως συμπλήρωση στο τέλος. Υπάρχει επειδή πολλά συστήματα σχεδιάστηκαν για να μεταφέρουν κείμενο και όχι ακατέργαστα δυαδικά δεδομένα. Τα σώματα των email, οι κεφαλίδες HTTP, τα έγγραφα XML και JSON και τα data URL περιμένουν χαρακτήρες που θα επιβιώσουν χωρίς αλλοίωση όταν αντιγράφονται, καταγράφονται και μεταδίδονται.

Ο αλγόριθμος δουλεύει σε ομάδες τριών byte (24 bit) και τις χωρίζει σε τέσσερις τιμές των 6 bit, καθεμία από τις οποίες αντιστοιχεί σε έναν από τους 64 χαρακτήρες. Γι’ αυτό η έξοδος Base64 είναι πάντα περίπου 33% μεγαλύτερη από την είσοδο: κάθε 3 byte γίνονται 4 χαρακτήρες. Όταν το μήκος της εισόδου δεν είναι πολλαπλάσιο του τρία, προστίθενται ένα ή δύο σύμβολα = ώστε το μήκος της εξόδου να είναι πολλαπλάσιο του τέσσερα. Για παράδειγμα, η λέξη Hi κωδικοποιείται σε SGk= και η λέξη Hello σε SGVsbG8=.

Κείμενο, byte και UTF-8

Το Base64 κωδικοποιεί byte και όχι χαρακτήρες, επομένως το κείμενο πρέπει πρώτα να μετατραπεί σε byte. Το εργαλείο χρησιμοποιεί UTF-8, την κωδικοποίηση σχεδόν κάθε σύγχρονης ιστοσελίδας και API. Έτσι το café γίνεται Y2Fmw6k= και ένα emoji όπως το 👍 (τέσσερα byte σε UTF-8) κωδικοποιείται σωστά και αποκωδικοποιείται πίσω στο ίδιο emoji. Πολλά γρήγορα σενάρια που βασίζονται στην παλιότερη συνάρτηση btoa() του προγράμματος περιήγησης αποτυγχάνουν σε οτιδήποτε εκτός Latin-1. Το εργαλείο αυτό δεν έχει τέτοιον περιορισμό, οπότε λειτουργεί άψογα και με ελληνικά κείμενα.

Κανονικό Base64 και base64url

Το κανονικό Base64 χρησιμοποιεί τα + και /, που έχουν ειδική σημασία στα URL και στις διαδρομές αρχείων. Η παραλλαγή που είναι ασφαλής για URL, το base64url, αντικαθιστά το + με - και το / με _, και συνήθως παραλείπει τη συμπλήρωση =. Είναι η μορφή που χρησιμοποιείται στα JSON Web Token (JWT), σε πολλές παραμέτρους OAuth και σε υπηρεσίες σύντμησης συνδέσμων. Ενεργοποιήστε την επιλογή Ασφαλές για URL (base64url) όταν χρειάζεστε αυτή τη μορφή και αφήστε την απενεργοποιημένη για συνημμένα email, data URL ή αρχεία ρυθμίσεων που αναμένουν κανονικό Base64.

Το Base64 δεν είναι κρυπτογράφηση

Αυτή είναι η πιο συχνή παρανόηση. Το Base64 είναι κωδικοποίηση: δεν έχει κλειδί ούτε μυστικό και οποιοσδήποτε μπορεί να την αντιστρέψει αμέσως. Η κωδικοποίηση ενός κωδικού πρόσβασης, ενός κλειδιού API ή προσωπικών δεδομένων σε Base64 δεν τα προστατεύει καθόλου. Η πιστοποίηση HTTP Basic, για παράδειγμα, στέλνει το username:password σε Base64, γι’ αυτό πρέπει να χρησιμοποιείται μόνο μέσω HTTPS. Αν χρειάζεστε εμπιστευτικότητα, χρησιμοποιήστε πραγματική κρυπτογράφηση (όπως AES) ή κατακερματισμό κωδικού πρόσβασης (όπως Argon2 ή bcrypt), όχι Base64.

Απόρρητο

Κάθε κωδικοποίηση και αποκωδικοποίηση γίνεται τοπικά στο πρόγραμμα περιήγησής σας με JavaScript. Το κείμενο που εισάγετε δεν στέλνεται ποτέ σε διακομιστή, δεν αποθηκεύεται και δεν καταγράφεται, οπότε μπορείτε να εξετάζετε με ασφάλεια tokens ή τιμές ρυθμίσεων. Το εργαλείο λειτουργεί μόνο με κείμενο και δεν δέχεται μεταφόρτωση αρχείων.

Συχνές ερωτήσεις

Γιατί το αποκωδικοποιημένο κείμενο μοιάζει με τυχαία σύμβολα;

Η συμβολοσειρά Base64 πιθανότατα αναπαριστά δυαδικά δεδομένα, όπως μια εικόνα, ένα συμπιεσμένο αρχείο ή κρυπτογραφημένο περιεχόμενο, και όχι κείμενο. Η αποκωδικοποίηση παράγει έγκυρα byte, αλλά δεν αποτελούν κατανοητό κείμενο UTF-8. Μπορεί επίσης να συμβεί αν το αρχικό κείμενο είχε κωδικοποιηθεί με διαφορετικό σύνολο χαρακτήρων από το UTF-8.

Γιατί το εργαλείο λέει ότι το Base64 μου δεν είναι έγκυρο;

Το έγκυρο Base64 περιέχει μόνο τους 64 επιτρεπτούς χαρακτήρες και προαιρετική συμπλήρωση =, ενώ το μήκος του πρέπει να ταιριάζει στην ομαδοποίηση των 4 χαρακτήρων. Συνήθεις αιτίες είναι χαρακτήρες που αντιγράφηκαν κατά λάθος, μια κομμένη συμβολοσειρά ή μια συμβολοσειρά base64url (με - και _) που αποκωδικοποιείται χωρίς να είναι ενεργή η επιλογή για URL.

Μπορώ να κωδικοποιήσω εικόνες ή άλλα αρχεία;

Όχι. Το εργαλείο έχει σχεδιαστεί μόνο για κείμενο. Για να ενσωματώσετε μια εικόνα σε HTML ή CSS θα χρειαστείτε ένα εργαλείο που διαβάζει τα ακατέργαστα byte του αρχείου και παράγει data URL.

Είναι το Base64 ασφαλές για την αποθήκευση κωδικών πρόσβασης;

Όχι. Το Base64 μπορεί να αποκωδικοποιηθεί από οποιονδήποτε σε κλάσμα του δευτερολέπτου. Οι κωδικοί πρόσβασης πρέπει να αποθηκεύονται με έναν ειδικό αργό αλγόριθμο κατακερματισμού, όπως ο Argon2, ο scrypt ή ο bcrypt.

Ποια είναι η διαφορά ανάμεσα στο Base64 με και χωρίς συμπλήρωση;

Η συμπλήρωση με = απλώς κάνει το μήκος της εξόδου πολλαπλάσιο του τέσσερα και δεν μεταφέρει πληροφορία. Οι περισσότεροι αποκωδικοποιητές μπορούν να ανακατασκευάσουν τα δεδομένα χωρίς αυτήν. Το base64url συνήθως παραλείπει τη συμπλήρωση επειδή το = είναι από μόνο του δεσμευμένος χαρακτήρας στα URL.