Κωδικοποίηση και αποκωδικοποίηση Base64
Μετατρέψτε κείμενο ή αρχείο σε Base64 ή αποκωδικοποιήστε Base64 ξανά σε αναγνώσιμο κείμενο. Το Unicode αντιμετωπίζεται σωστά, το URL-safe αλφάβητο ενεργοποιείται με ένα κλικ και η αποκωδικοποίηση δέχεται οποιοδήποτε από τα δύο αλφάβητα, με ή χωρίς συμπλήρωση (padding).
0 χαρακτήρες · 0 λέξεις · 0 γραμμές
0 χαρακτήρες · 0 λέξεις · 0 γραμμές
Εκτελείται εξ ολοκλήρου σε αυτήν την καρτέλα του προγράμματος περιήγησης. Το κείμενό σας δεν ανεβαίνει ούτε αποθηκεύεται πουθενά.
Το αλφάβητο Base64
Δείκτης → χαρακτήρας κατά το RFC 4648. Οι δύο τελευταίοι, που επισημαίνονται, διαφέρουν στην παραλλαγή για URL: το 62 είναι + ή -, το 63 είναι / ή _.
- 0A
- 1B
- 2C
- 3D
- 4E
- 5F
- 6G
- 7H
- 8I
- 9J
- 10K
- 11L
- 12M
- 13N
- 14O
- 15P
- 16Q
- 17R
- 18S
- 19T
- 20U
- 21V
- 22W
- 23X
- 24Y
- 25Z
- 26a
- 27b
- 28c
- 29d
- 30e
- 31f
- 32g
- 33h
- 34i
- 35j
- 36k
- 37l
- 38m
- 39n
- 40o
- 41p
- 42q
- 43r
- 44s
- 45t
- 46u
- 47v
- 48w
- 49x
- 50y
- 51z
- 520
- 531
- 542
- 553
- 564
- 575
- 586
- 597
- 608
- 619
- 62+ -
- 63/ _
Πόσο μεγαλώνει η έξοδος
Κάθε 3 byte εισόδου γίνονται 4 χαρακτήρες· μια τελευταία ομάδα 1 ή 2 byte συμπληρώνεται με = στο τυπικό Base64 και μένει χωρίς padding στη μορφή για URL.
| Είσοδος | Byte | Τυπικό | Ασφαλές για URL | Μήκος |
|---|---|---|---|---|
U | 1 | VQ== | VQ | 4 |
Ul | 2 | VWw= | VWw | 4 |
Ult | 3 | VWx0 | VWx0 | 4 |
UltK | 4 | VWx0Sw== | VWx0Sw | 8 |
UltKi | 5 | VWx0S2k= | VWx0S2k | 8 |
UltKit | 6 | VWx0S2l0 | VWx0S2l0 | 8 |
Τι κάνει το Base64
Το Base64, που ορίζεται στο RFC 4648, γράφει τυχαία bytes με 64 εκτυπώσιμους χαρακτήρες ASCII: A–Z, a–z, 0–9, + και /. Κάθε ομάδα τριών bytes (24 bit) χωρίζεται σε τέσσερις αριθμούς των 6 bit και κάθε αριθμός επιλέγει έναν χαρακτήρα από το αλφάβητο. Όταν το μήκος της εισόδου δεν είναι πολλαπλάσιο του τρία, η τελευταία ομάδα συμπληρώνεται με ένα ή δύο σύμβολα =. Το αποτέλεσμα είναι πάντα περίπου 33% μεγαλύτερο από την είσοδο: 4 χαρακτήρες για κάθε 3 bytes.
Υπάρχει επειδή πολλά κανάλια σχεδιάστηκαν για κείμενο. Το email (MIME), τα data: URL σε HTML και CSS, τα πεδία JSON που μεταφέρουν εικόνες ή πιστοποιητικά και οι κεφαλίδες HTTP Basic authentication χρησιμοποιούν όλα Base64 για να μεταφέρουν δυαδικά δεδομένα με ασφάλεια. Δεν είναι κρυπτογράφηση και δεν κρύβει τίποτα: η αποκωδικοποίηση δεν χρειάζεται κλειδί.
Unicode και η παραλλαγή URL-safe
Το Base64 κωδικοποιεί bytes, όχι γράμματα, επομένως το κείμενο πρέπει πρώτα να μετατραπεί σε bytes. Αυτό το εργαλείο χρησιμοποιεί πάντα UTF-8, την κωδικοποίηση πάνω στην οποία λειτουργεί το διαδίκτυο: το é γίνεται δύο bytes και ένα emoji τέσσερα. Η ενσωματωμένη συνάρτηση btoa του προγράμματος περιήγησης από μόνη της πετάει σφάλμα σε οποιονδήποτε χαρακτήρα πάνω από το U+00FF, γι' αυτό οι απλοϊκοί κωδικοποιητές αποτυγχάνουν με τόνους και emoji· εδώ το κείμενο περνά πρώτα από το TextEncoder και η αποκωδικοποίηση το αντιστρέφει με το TextDecoder. Αν τα αποκωδικοποιημένα bytes δεν είναι έγκυρο UTF-8 (μια εικόνα, ένα αρχείο zip), το εργαλείο τα εμφανίζει σε δεκαεξαδική μορφή αντί για μπερδεμένο κείμενο.
Το τυπικό Base64 χρησιμοποιεί τα + και /, που έχουν ειδική σημασία στα URL και στα ονόματα αρχείων. Το URL-safe αλφάβητο της ενότητας 5 του RFC 4648 τα αντικαθιστά με - και _, και η συμπλήρωση συνήθως παραλείπεται. Τα JSON Web Tokens χρησιμοποιούν ακριβώς αυτή τη μορφή. Ο αποκωδικοποιητής δέχεται και τα δύο αλφάβητα καθώς και απούσα συμπλήρωση, οπότε μπορείτε να επικολλήσετε όποιο θέλετε.
Κωδικοποίηση αρχείων και εικόνων
Επιλέξτε ένα αρχείο και το εργαλείο το διαβάζει τοπικά με το FileReader και επιστρέφει το Base64 του ή ένα πλήρες data: URL με τον τύπο MIME του αρχείου, έτοιμο για επικόλληση σε ετικέτα img ή σε φόντο CSS. Οι ενσωματωμένες εικόνες γλιτώνουν ένα αίτημα HTTP, αλλά μεγαλώνουν κατά το ένα τρίτο και δεν μπορούν να αποθηκευτούν χωριστά στην κρυφή μνήμη, γι' αυτό ταιριάζουν σε μικρά εικονίδια και όχι σε φωτογραφίες. Για εικόνες με προεπισκόπηση και έτοιμα αποσπάσματα HTML και CSS, χρησιμοποιήστε το Εικόνα σε Base64.
Συχνές ερωτήσεις
- Γιατί το αποτέλεσμα Base64 είναι μεγαλύτερο από την είσοδο;
- Κάθε 3 bytes γίνονται 4 χαρακτήρες, οπότε η έξοδος έχει περίπου 4/3 του μεγέθους της εισόδου, συν έως δύο χαρακτήρες συμπλήρωσης. Το κείμενο εκτός ASCII είναι ακόμη μεγαλύτερο, επειδή το UTF-8 χρησιμοποιεί δύο έως τέσσερα bytes ανά χαρακτήρα.
- Τι είναι τα σύμβολα = στο τέλος;
- Συμπλήρωση. Κάνουν το μήκος της εξόδου πολλαπλάσιο του τέσσερα όταν το μήκος της εισόδου δεν είναι πολλαπλάσιο του τρία. Ένα = σημαίνει ότι η τελευταία ομάδα είχε δύο bytes, δύο = σημαίνουν ότι είχε ένα byte.
- Γιατί η αποκωδικοποίηση αποτυγχάνει με σφάλμα μη έγκυρου χαρακτήρα;
- Η είσοδος περιέχει κάτι εκτός αλφαβήτου, όπως κενό μέσα σε λέξη, εισαγωγικό ή ένα % από κωδικοποίηση URL. Οι αλλαγές γραμμής και η απούσα συμπλήρωση γίνονται δεκτές· οι άλλοι χαρακτήρες όχι.
- Είναι ασφαλές να κωδικοποιήσω έναν κωδικό πρόσβασης σε Base64;
- Το Base64 δεν προσφέρει καμία προστασία. Η HTTP Basic authentication στέλνει το user:password σε Base64, γι' αυτό πρέπει να χρησιμοποιείται μόνο μέσω HTTPS. Για την προστασία μυστικών χρησιμοποιήστε πραγματική κρυπτογράφηση ή κατακερματισμό.
- Ποια είναι η διαφορά μεταξύ Base64 και Base64url;
- Μόνο δύο χαρακτήρες και η συμπλήρωση: το Base64url χρησιμοποιεί - και _ αντί για + και / και συνήθως παραλείπει το =, ώστε το αποτέλεσμα να χωράει σε URL και ονόματα αρχείων χωρίς escape.