Τι είναι το Base64 και γιατί υπάρχει
Το Base64 είναι ένα σχήμα κωδικοποίησης δυαδικών δεδομένων σε κείμενο. Παίρνει ακατέργαστα bytes - το είδος δεδομένων που αποτελεί εικόνες, αρχεία συμπίεσης, κρυπτογραφικά κλειδιά, ή οτιδήποτε άλλο δεν είναι απλό αναγνώσιμο κείμενο - και τα ξαναγράφει χρησιμοποιώντας ένα μικρό, ασφαλές αλφάβητο 64 εκτυπώσιμων χαρακτήρων: τα 26 κεφαλαία γράμματα A-Z, τα 26 πεζά γράμματα a-z, τα δέκα ψηφία 0-9, και δύο επιπλέον σύμβολα, συνήθως + και /. Ένα σύμβολο ίσον χρησιμοποιείται για συμπλήρωση (padding) στο τέλος. Επειδή κάθε χαρακτήρας που παράγει είναι απλό ASCII, το αποτέλεσμα μπορεί να ταξιδέψει μέσα από συστήματα που σχεδιάστηκαν μόνο για να διαχειρίζονται κείμενο.
Αυτός είναι ο βασικός λόγος που εφευρέθηκε το Base64. Πολλά παλαιότερα πρωτόκολλα - το email είναι το κλασικό παράδειγμα - υποθέτουν ότι το περιεχόμενο που μεταφέρουν είναι κείμενο. Αν τους δώσετε ακατέργαστα δυαδικά δεδομένα, ορισμένα bytes αλλοιώνονται, αφαιρούνται, ή ερμηνεύονται ως χαρακτήρες ελέγχου, και τα δεδομένα φτάνουν κατεστραμμένα. Το Base64 παρακάμπτει το πρόβλημα μετατρέποντας τα bytes σε μια μορφή που κάθε κανάλι ασφαλές για κείμενο θα περάσει ανέπαφη. Τα αρχικά δεδομένα μπορούν στη συνέχεια να ανακατασκευαστούν ακριβώς στην άλλη πλευρά.

Πώς λειτουργεί η μετατροπή
Μηχανικά, το Base64 ομαδοποιεί την εισαγωγή σε τμήματα των τριών bytes - δηλαδή 24 bits - και μετά αναδιαχωρίζει αυτά τα ίδια 24 bits σε τέσσερις ομάδες των έξι bits η καθεμία. Έξι bits μπορούν να αναπαραστήσουν 64 πιθανές τιμές, κάτι που εξηγεί ακριβώς γιατί το αλφάβητο έχει 64 χαρακτήρες. Έτσι τρία bytes εισαγωγής γίνονται πάντα τέσσερις χαρακτήρες εξαγωγής. Όταν το μήκος της εισαγωγής δεν είναι ακριβές πολλαπλάσιο του τρία, ο κωδικοποιητής συμπληρώνει την τελευταία ομάδα με έναν ή δύο χαρακτήρες = ώστε ένας αποκωδικοποιητής να ξέρει πού τελειώνουν τα πραγματικά δεδομένα.
Αυτή η αναλογία τέσσερα-προς-τρία είναι επίσης η προέλευση της περιβόητης επιβάρυνσης μεγέθους: η έξοδος Base64 είναι περίπου 33% μεγαλύτερη από τα αρχικά δεδομένα. Αν το κωδικοποιημένο κείμενο τυλιχτεί σε γραμμές σταθερού πλάτους, όπως συχνά απαιτούν τα πρότυπα email, πληρώνετε μερικά επιπλέον ποσοστά πάνω απ' αυτό για τις αλλαγές γραμμής. Η επιβάρυνση είναι το τίμημα της συμβατότητας, και για τις περισσότερες χρήσεις είναι δίκαιη ανταλλαγή.
Πού συναντάτε το Base64
Μόλις ξέρετε τι να ψάχνετε, το Base64 εμφανίζεται παντού στην καθημερινή πληροφορική:
- Data URIs. Μια μικρή εικόνα ή γραμματοσειρά μπορεί να ενσωματωθεί απευθείας σε HTML ή CSS με ένα
data:URI, με το περιεχόμενο του αρχείου γραμμένο ως Base64. Το πρόγραμμα περιήγησης το αποκωδικοποιεί ενσωματωμένα, εξοικονομώντας ένα ξεχωριστό αίτημα δικτύου. - Συνημμένα email. Το MIME, το πρότυπο που επιτρέπει στο email να μεταφέρει αρχεία, βασίζεται στο Base64 για να μετακινήσει δυαδικά συνημμένα μέσα από ένα σύστημα ταχυδρομείου μόνο-κειμένου χωρίς ζημιά.
- HTTP Basic authentication. Η γνώριμη κεφαλίδα
Authorization: Basic ...είναι απλώς ένα όνομα χρήστη και κωδικός πρόσβασης ενωμένα με άνω-κάτω τελεία και κωδικοποιημένα σε Base64 - κάτι που εξηγεί ακριβώς γιατί το Basic auth πρέπει πάντα να τρέχει μέσω HTTPS. - Tokens και διαμόρφωση. Τα JSON Web Tokens, τα πιστοποιητικά, τα κλειδιά SSH, και αμέτρητες τιμές διαμόρφωσης αποθηκεύονται ή μεταδίδονται ως Base64 ώστε να επιβιώνουν σε αντιγραφή-επικόλληση και αποθήκευση με βάση κείμενο.
Η κωδικοποίηση δεν είναι κρυπτογράφηση
Αυτό είναι το πιο σημαντικό πράγμα που πρέπει να καταλάβετε, και μπερδεύει τόσο αρχάριους όσο και έμπειρους προγραμματιστές. Το Base64 δεν είναι κρυπτογράφηση και δεν παρέχει καμία ασφάλεια. Δεν υπάρχει μυστικό κλειδί, κωδικός πρόσβασης, ή οτιδήποτε ιδιωτικό σε αυτό. Ο μετασχηματισμός είναι πλήρως δημόσιος και εντελώς αντιστρέψιμος: όποιος δει μια συμβολοσειρά Base64 μπορεί να την αποκωδικοποιήσει πίσω στα αρχικά bytes σε ένα δευτερόλεπτο, χρησιμοποιώντας ένα εργαλείο ακριβώς όπως αυτό.
Έτσι το Base64 είναι μια κακή κρυψώνα για κωδικούς πρόσβασης, κλειδιά API, ή οποιαδήποτε ευαίσθητη τιμή. Αν μια συμβολοσειρά απλώς φαίνεται ανακατεμένη, αυτό δεν τη κάνει προστατευμένη. Η κρυπτογράφηση, αντίθετα, μετασχηματίζει τα δεδομένα με ένα μυστικό κλειδί ώστε μόνο κάποιος που κατέχει αυτό το κλειδί να μπορεί να τα διαβάσει. Οι δύο λύνουν διαφορετικά προβλήματα: η κρυπτογράφηση προστατεύει την εμπιστευτικότητα, το Base64 προστατεύει τη συμβατότητα. Χρησιμοποιούνται συχνά μαζί - μπορεί να κρυπτογραφήσετε δεδομένα με AES και μετά να τα κωδικοποιήσετε σε Base64 ώστε να ταξιδέψουν μέσα από ένα κανάλι κειμένου - αλλά το ένα δεν είναι ποτέ υποκατάστατο του άλλου.

Κωδικοποίηση εναντίον αποκωδικοποίησης
Οι δύο κατευθύνσεις είναι απλές κατοπτρικές εικόνες. Η κωδικοποίηση παίρνει το αρχικό σας κείμενο ή δυαδικά δεδομένα και παράγει τη συμβολοσειρά χαρακτήρων Base64. Η αποκωδικοποίηση παίρνει μια συμβολοσειρά Base64 και ανακατασκευάζει τα ακριβή αρχικά bytes. Το εργαλείο μας κάνει και τα δύο απευθείας στο πρόγραμμα περιήγησής σας - τίποτα από όσα πληκτρολογείτε ή επικολλάτε δεν στέλνεται ποτέ σε server, οπότε η λειτουργία είναι εντελώς τοπική και ιδιωτική. Αυτό το κάνει ασφαλές για να αποκωδικοποιήσετε ένα token που κάνετε debug ή να κωδικοποιήσετε ένα απόσπασμα που θέλετε να ενσωματώσετε, χωρίς τα δεδομένα σας να φεύγουν από τη σελίδα.
Για σχετικές μετατροπές, δείτε το εργαλείο κωδικοποίησης/αποκωδικοποίησης URL για percent-encoding, ή τον αποκωδικοποιητή JWT όταν χρειάζεται να επιθεωρήσετε τα τμήματα Base64 μέσα σε ένα token. Θα τα βρείτε δίπλα στα υπόλοιπα εργαλεία προγραμματιστών μας.
Συχνές ερωτήσεις
Είναι το Base64 μια μορφή κρυπτογράφησης;
Όχι. Το Base64 είναι κωδικοποίηση, όχι κρυπτογράφηση. Δεν χρησιμοποιεί κλειδί και είναι πλήρως αντιστρέψιμο από οποιονδήποτε, οπότε δεν προσφέρει καμία ασφάλεια. Χρησιμοποιήστε πραγματική κρυπτογράφηση όπως AES ή RSA για να προστατέψετε ευαίσθητα δεδομένα.
Γιατί το Base64 κάνει τα δεδομένα μεγαλύτερα;
Το Base64 μετατρέπει κάθε τρία bytes εισαγωγής σε τέσσερις χαρακτήρες εξαγωγής, κάτι που προσθέτει περίπου 33% στο μέγεθος. Αν η έξοδος χωριστεί σε γραμμές σταθερού μήκους, οι αλλαγές γραμμής προσθέτουν μερικά επιπλέον ποσοστά.
Ποιους χαρακτήρες χρησιμοποιεί το Base64;
Το τυπικό αλφάβητο είναι τα 26 κεφαλαία γράμματα, τα 26 πεζά γράμματα, τα ψηφία 0 έως 9, συν τα σύμβολα συν και κάθετος, με το σύμβολο ίσον να χρησιμοποιείται για συμπλήρωση στο τέλος.
Μπορώ να αποθηκεύσω με ασφάλεια κωδικούς πρόσβασης σε Base64;
Όχι. Το Base64 αλλάζει μόνο την εμφάνιση των δεδομένων, όχι το ποιος μπορεί να τα διαβάσει. Οποιοσδήποτε μπορεί να το αποκωδικοποιήσει ακαριαία. Οι κωδικοί πρόσβασης πρέπει να γίνονται hash με έναν ισχυρό αλγόριθμο, και τα μυστικά πρέπει να κρυπτογραφούνται.
Είναι ιδιωτικό αυτό το εργαλείο Base64;
Ναι. Η κωδικοποίηση και η αποκωδικοποίηση γίνονται εξ ολοκλήρου στο πρόγραμμα περιήγησής σας. Τίποτα από όσα εισάγετε δεν ανεβαίνει ή στέλνεται σε κανέναν server, οπότε τα δεδομένα σας παραμένουν στη δική σας συσκευή.
Ποια είναι η διαφορά ανάμεσα σε κωδικοποίηση και αποκωδικοποίηση;
Η κωδικοποίηση μετατρέπει το αρχικό κείμενο ή δυαδικά δεδομένα σε συμβολοσειρά Base64. Η αποκωδικοποίηση αντιστρέφει αυτό, μετατρέποντας μια συμβολοσειρά Base64 ξανά στα ακριβή αρχικά bytes. Είναι κατοπτρικές λειτουργίες.
