Πώς λειτουργεί η κωδικοποίηση Base64

Πίνακας περιεχομένων:

Πώς λειτουργεί η κωδικοποίηση Base64
Πώς λειτουργεί η κωδικοποίηση Base64
Anonim

Η κωδικοποίηση Base64 είναι μια διαδικασία μετατροπής δυαδικών δεδομένων σε μορφή συμβολοσειράς ASCII μετατρέποντας αυτά τα δυαδικά δεδομένα σε αναπαράσταση χαρακτήρων 6 bit. Η μέθοδος κωδικοποίησης Base64 χρησιμοποιείται όταν δυαδικά δεδομένα, όπως εικόνες ή βίντεο, μεταδίδονται μέσω συστημάτων που έχουν σχεδιαστεί για τη μετάδοση δεδομένων σε μορφή απλού κειμένου (ASCII).

Γιατί χρησιμοποιείται η κωδικοποίηση Base64;

Η ανάγκη για κωδικοποίηση Base64 προέρχεται από τα προβλήματα που παρουσιάζονται όταν τα μέσα μεταδίδονται σε ακατέργαστη δυαδική μορφή σε συστήματα που βασίζονται σε κείμενο.

Δεδομένου ότι τα συστήματα που βασίζονται σε κείμενο (όπως το ηλεκτρονικό ταχυδρομείο) ερμηνεύουν τα δυαδικά δεδομένα ως ένα ευρύ φάσμα χαρακτήρων, συμπεριλαμβανομένων των ειδικών χαρακτήρων εντολών, πολλά από τα δυαδικά δεδομένα που μεταδίδονται στα μέσα μεταφοράς παρερμηνεύονται από αυτά τα συστήματα και χάνονται ή αλλοιώνονται σε η διαδικασία μετάδοσης.

Image
Image

Μια μέθοδος κωδικοποίησης αυτού του είδους δυαδικών δεδομένων με τρόπο που να αποφεύγονται τέτοια προβλήματα μετάδοσης είναι η αποστολή τους ως απλό κείμενο ASCII σε κωδικοποιημένη μορφή Base64. Αυτή είναι μία από τις τεχνικές που χρησιμοποιεί το πρότυπο MIME για την αποστολή δεδομένων εκτός απλού κειμένου.

Πολλές γλώσσες προγραμματισμού, όπως η PHP και η Javascript, περιλαμβάνουν λειτουργίες κωδικοποίησης και αποκωδικοποίησης Base64 για την ερμηνεία δεδομένων που μεταδίδονται χρησιμοποιώντας την κωδικοποίηση Base64.

Λογική κωδικοποίησης Base64

Η κωδικοποίηση Base64 διασπά τα δυαδικά δεδομένα σε τμήματα 6-bit των 3 πλήρων byte και αναπαριστά αυτά ως εκτυπώσιμους χαρακτήρες στο πρότυπο ASCII. Αυτό το κάνει ουσιαστικά σε δύο βήματα.

Το πρώτο βήμα είναι να χωρίσετε τη δυαδική συμβολοσειρά σε μπλοκ 6-bit. Το Base64 χρησιμοποιεί μόνο 6 bit (που αντιστοιχούν σε 2^6=64 χαρακτήρες) για να διασφαλίσει ότι τα κωδικοποιημένα δεδομένα είναι εκτυπώσιμα και αναγνώσιμα από τον άνθρωπο. Δεν χρησιμοποιείται κανένας από τους ειδικούς χαρακτήρες που είναι διαθέσιμοι στο ASCII.

Οι 64 χαρακτήρες (εξ ου και το όνομα Base64) είναι 10 ψηφία, 26 πεζοί χαρακτήρες, 26 κεφαλαίοι χαρακτήρες καθώς και το σύμβολο συν (+) και η κάθετο προς τα εμπρός (/). Υπάρχει επίσης ένας 65ος χαρακτήρας γνωστός ως pad, που είναι το σύμβολο Ίσης (=). Αυτός ο χαρακτήρας χρησιμοποιείται όταν το τελευταίο τμήμα δυαδικών δεδομένων δεν περιέχει πλήρη 6 bit.

Παράδειγμα κωδικοποίησης Base64

Για παράδειγμα, πάρτε τρεις αριθμούς ASCII 155, 162 και 233. Αυτοί οι τρεις αριθμοί αποτελούν μια δυαδική ροή 100110111010001011101001. Ένα δυαδικό αρχείο, όπως μια εικόνα, περιέχει μια δυαδική ροή που εκτελείται για δεκάδες ή εκατοντάδες χιλιάδες και αυτά.

Ένας κωδικοποιητής Base64 ξεκινά τεμαχίζοντας τη δυαδική ροή σε ομαδοποιήσεις έξι χαρακτήρων: 100110 111010 001011 101001. Κάθε μία από αυτές τις ομαδοποιήσεις μεταφράζεται στους αριθμούς 38, 58, 11 και 41..

Μια δυαδική ροή έξι χαρακτήρων μετατρέπει μεταξύ δυαδικών (ή βάσης-2) σε δεκαδικούς χαρακτήρες (βάσης-10), τετραγωνίζοντας κάθε τιμή που αντιπροσωπεύεται από το 1 στη δυαδική ακολουθία με το τετράγωνο θέσης της. Ξεκινώντας από τα δεξιά και κινούμενοι προς τα αριστερά και ξεκινώντας με το μηδέν, οι τιμές στη δυαδική ροή αντιπροσωπεύουν το 2^0, μετά 2^1, μετά 2^2, μετά 2^3, μετά 2^4, μετά 2^5.

Εδώ είναι ένας άλλος τρόπος για να το δείτε. Ξεκινώντας από τα αριστερά, κάθε θέση αξίζει 1, 2, 4, 8, 16 και 32. Εάν ο δυαδικός αριθμός έχει 1 στην υποδοχή, προσθέτετε αυτήν την τιμή. αν έχει 0 στην υποδοχή, δεν το έχεις. Η δυαδική συμβολοσειρά 100110 μετατρέπεται στον δεκαδικό αριθμό 38: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

Η κωδικοποίηση Base64 παίρνει αυτήν τη δυαδική συμβολοσειρά και την αναλύει στις τιμές 6-bit 38, 58, 11 και 41.

Τέλος, αυτοί οι αριθμοί μετατρέπονται σε χαρακτήρες ASCII χρησιμοποιώντας τον πίνακα κωδικοποίησης Base64. Οι τιμές των 6 bit αυτού του παραδείγματος μεταφράζονται στην ακολουθία ASCII m6Lp.

Χρήση του πίνακα μετατροπών Base64:

  • 38 είναι m
  • 58 είναι 6
  • Το 11 είναι L
  • Το 41 είναι p

Αυτή η διαδικασία δύο βημάτων εφαρμόζεται σε ολόκληρη τη δυαδική συμβολοσειρά που είναι κωδικοποιημένη.

Για να διασφαλιστεί ότι τα κωδικοποιημένα δεδομένα μπορούν να εκτυπωθούν σωστά και ότι δεν υπερβαίνουν το όριο μήκους γραμμής οποιουδήποτε διακομιστή αλληλογραφίας, εισάγονται χαρακτήρες νέας γραμμής για να διατηρηθούν τα μήκη γραμμής κάτω από 76 χαρακτήρες. Οι χαρακτήρες της νέας γραμμής κωδικοποιούνται όπως όλα τα άλλα δεδομένα.

Ολόκληρος ο σκοπός της κωδικοποίησης Base64, από την προσθήκη padding για τη διατήρηση δυαδικών τμημάτων 3 byte έως τη μετατροπή δυαδικού σε κείμενο χρησιμοποιώντας τον πίνακα Base64, είναι η διατήρηση της ακεραιότητας των μεταδιδόμενων δυαδικών πληροφοριών.

Πίνακας κωδικοποίησης Base64

Ο παρακάτω πίνακας μεταφράζει και τους 64 χαρακτήρες που χρησιμοποιούνται στην κωδικοποίηση Base64.

Πίνακας κωδικοποίησης Base64
Αξία Char Αξία Char Αξία Char Αξία Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 Ε 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Λύση του τέλους του παιχνιδιού

Στο τέλος της διαδικασίας κωδικοποίησης, ενδέχεται να υπάρχει πρόβλημα. Εάν το μέγεθος των αρχικών δεδομένων σε byte είναι πολλαπλάσιο των τριών, όλα λειτουργούν καλά. Εάν δεν είναι, ενδέχεται να υπάρχουν κενά byte. Για σωστή κωδικοποίηση, χρειάζονται ακριβώς 3 byte δυαδικών δεδομένων.

Η λύση είναι να προσθέσετε αρκετά byte με τιμή 0 για να δημιουργήσετε μια ομάδα 3 byte. Δύο τέτοιες τιμές προστίθενται εάν τα δεδομένα χρειάζονται ένα επιπλέον byte δεδομένων, η μία προστίθεται για δύο επιπλέον byte.

Φυσικά, αυτά τα τεχνητά τελικά '0 δεν μπορούν να κωδικοποιηθούν χρησιμοποιώντας τον παρακάτω πίνακα κωδικοποίησης. Πρέπει να αντιπροσωπεύονται από έναν 65ο χαρακτήρα. Ο χαρακτήρας συμπλήρωσης Base64 είναι το σύμβολο Equal (=) και τοποθετείται στο τέλος των κωδικοποιημένων δεδομένων.

Συνιστάται: