Στο YUI 3 Gallery: Base64 και Y64 κωδικοποίηση

6 Ιούλη 2010 στις 9:39 π.μ. από τον Nicholas C. Zakas | Στο Ανάπτυξη | 5 Σχόλια

Νικόλαος Γ. Zakas ( @ slicknet στο Twitter) είναι ο επικεφαλής μηχανικός frontend για την Yahoo! αρχική σελίδα , ένα YUI συνεισφέρων, και συγγραφέας του Επαγγελματικής JavaScript για Web Developers και η πρόσφατα κυκλοφόρησε, High Performance JavaScript .

Base64 κωδικοποίηση είχε αρχικά σχεδιαστεί για να επιτρέπει χωρίς απώλειες δεδομένων περνάει ανάμεσα από 8-bit και 7-bit συστήματα. Το κύριο παράδειγμα χρήσης της είναι το email, το οποίο χρησιμοποιείται κατά παράδοση 7-bit συστήματα να μεταφέρει το μήνυμα ηλεκτρονικού ταχυδρομείου, ενώ όσοι από εμάς στο σπίτι στους υπολογιστές μας ήταν με τη χρήση 8-bit συστήματα. Αυτό έγινε ιδιαίτερα σημαντικό με μη-κειμένου συνδέσεις ηλεκτρονικού ταχυδρομείου, το οποίο θα κωδικοποιούνται υπό μορφή MIME base64 και αποστέλλεται μαζί με τον προορισμό.

Πιο πρόσφατα, κωδικοποίησης base64 έχει αποκτήσει δημοτικότητα για τη χρήση του σε στοιχεία URIs. Για όσους γνωρίζουν, URIs δεδομένα είναι ένας τρόπος ενσωμάτωσης αρχείων μέσα του HTML και CSS. Μία από τις υποστηριζόμενες μορφές δεδομένων URI είναι base64.

Base64 κωδικοποίηση εξακολουθεί να χρησιμοποιείται συχνά στο πλαίσιο του προγραμματισμού, κυρίως για συσκότιση, αλλά και για την ασφαλή μεταφορά των δεδομένων. Ενώ ορισμένα προγράμματα περιήγησης έχουν μητρική base64 κωδικοποίηση και αποκωδικοποίηση, η λειτουργία αυτή δεν ορίζεται σε κανένα πρότυπο ούτε ευρέως διαθέσιμα σε όλους τους browsers. Η YUI 3 Gallery Base64 ενότητα παρέχει μια κοινή εφαρμογή της κωδικοποίησης base64 που μπορεί να χρησιμοποιηθεί σε όλες τις κατηγορίας Α browsers. Για να χρησιμοποιήσετε το Base64 ενότητα, περιλαμβάνουν τα εξής στη σελίδα σας:

<script src="http://yui.yahooapis.com/3.1.0/build/yui/yui-min.js"></script> <script> YUI({ gallery: 'gallery-2010.06.16-19-51' }).use('gallery-base64', function(Y) { //your code here }); </script> 

Η Base64 ενότητα εκθέτει μια Base64 αντικείμενο με δύο μεθόδους: encode() και decode() . Οι μέθοδοι που χρησιμοποιούνται ως εξής:

 var decodedText = Y.Base64.decode(encodedText); var encodedText2 = Y.Base64.encode(rawText); 

Μαζί με το Base64 ενότητα, έγραψα επίσης Y64 ενότητα . Y64 είναι ένα base64 παραλλαγή που χρησιμοποιείται σε Yahoo! κατά base64 πληροφορίες πρέπει να διαβιβαστούν στο πλαίσιο της μια αίτηση GET. Τακτικές base64 έχει τρεις χαρακτήρες που δεν είναι URL ασφαλές: συν (+), κάθετος (/), και ισούται με (=). (.) Y64 κωδικοποίηση αντικαθιστά αυτά με τελεία, υπογράμμισης (_) και παύλα (-), αντίστοιχα. Αυτό επιτρέπει Y64-κωδικοποιημένες σειρές που πρέπει να τοποθετούνται σε διευθύνσεις URL χωρίς να ανησυχείτε για URL διαφυγή των χαρακτήρων.

Το Y64 ενότητα απαιτεί την Base64 ενότητα, η οποία είναι αυτόματα τραβιέται μέσα όταν έχετε συμπεριλάβει τον ακόλουθο κώδικα:

 YUI({ gallery: 'gallery-2010.06.16-19-51' }).use('gallery-y64', function(Y) { //your code here }); 

Το Y64 ενότητα εκθέτει μια Y64 αντικείμενο με encode() και decode() μεθόδους, έτσι χρήσης είναι το ίδιο με το Base64 αντικείμενο:

 var decodedText = Y.Y64.decode(encodedText); var encodedText2 = Y.Y64.encode(rawText); 

Εάν σχεδιάζετε για την διέλευση base64-κωδικοποιημένα δεδομένα σε μια συμβολοσειρά URL, μπορεί να θέλετε να εξετάσει Y64 ως εναλλακτική λύση.

Λάβετε υπόψη σας ότι base64 και Y64 δεν αλγόριθμους κρυπτογράφησης. Οι αλγόριθμοι κρυπτογράφησης που αποσκοπούν να διασφαλίσουν τα δεδομένα από τα αδιάκριτα βλέμματα. Base64 και Y64 έχουν encoding αλγόριθμοι σχεδιαστεί για τη μετάδοση δεδομένων χωρίς τον κίνδυνο αλλοίωσης των δεδομένων - το είδος της διαφθοράς που συμβαίνει όταν τα δεδομένα μεταφέρονται από το ένα σύστημα στο άλλο και μπορούν να κωδικοποιηθούν και να αποκωδικοποιηθεί σε πολλές διαφορετικές μορφές πριν φτάσετε στον τελικό προορισμό.

Ένα καλό παράδειγμα είναι η σύνδεση διαμοιρασμού λειτουργικότητα. Ας υποθέσουμε ότι είστε μοιράζονται μια σύνδεση με τη διάβαση του σε ένα entrypoint, όπως http://www.example.com?share=<url> . Η url πρέπει να είναι URL-κωδικοποιημένα για την ασφαλή μετάδοση, αλλά ότι η ίδια διεύθυνση URL μπορεί να περιέχει, επίσης, URL-κωδικοποιημένα δεδομένα. Και το πιστεύεις ή όχι, μερικές φορές τα προγράμματα περιήγησης μπορεί να mis-κωδικοποιημένα URLs πριν από τη μετάδοση (είναι σπάνιο, αλλά όχι ανύπαρκτες). Για ένα υψηλότερο επίπεδο εμπιστοσύνης ότι τα δεδομένα θα φτάσουν σε καλή κατάσταση, μπορείτε να χρησιμοποιήσετε Y64 κωδικοποίηση:

 var destination = "http://www.example.com?share=" + Y.Y64.encode(url); 

Ο προορισμός θα αποκωδικοποιήσει τότε η αξία URL. Επειδή η τιμή αυτή δεν θα απαιτήσει URL-encoding, οι πιθανότητες των δεδομένων γίνεται κατεστραμμένα κατά τη μετάδοση είναι μειωμένες.

Δεν έχει ο καθένας θα πρέπει να χρησιμοποιήσουν base64 ή Y64 κωδικοποίησης στις εφαρμογές τους στο διαδίκτυο, αλλά αυτά μπορεί να είναι πολύ ισχυρά εργαλεία για να κρατήσει στην πίσω τσέπη σας.

Περισσότερες Πληροφορίες:

Μοιραστείτε και επεκτείνει: Σελιδοδείκτης με del.icio.us | Digg αυτό! | reddit!

5 Σχόλια »

RSS feed για σχόλια σχετικά με αυτό το post. TrackBack URI

  1. Χρησιμοποιείτε ένα διακόπτη ανά χαρακτήρα ... η οποία είναι αρκετά τρομερό. Έγραψα και δημοσιεύτηκε ένα παράδειγμα πριν από μερικά χρόνια:

    Απλή κωδικοποίηση Base64 / αποκωδικοποίηση - Javascript

    Σημειώστε ότι με ένα μικρό τσίμπημα με τον ανώνυμο λειτουργία κατασκευαστή, θα μπορούσε να δημιουργήσει ένα εξίσου αποτελεσματικό Y64 λειτουργίες.

    Διστάσετε να χρησιμοποιήσετε ξανά ό, τι θέλετε.

    Σχόλιο από Preston Λ. Bannister - 6 Ιούλ 2010 #

  2. Το άρθρο αναφέρει ότι μπορείτε να χρησιμοποιήσετε ένα δεδομένων URI για να ενσωματώσετε αρχεία μέσα από το έγγραφο HTML. Μήπως αυτή την ενότητα υποστήριξης που λειτουργικότητα (απέναντι κατηγορίας Α browsers);

    Σχόλιο από Σάλτσα - 6 του Ιουλίου 2010 #

  3. Για να διευκρινιστεί, χρησιμοποιείτε τις ίδιες συμβάσεις Y64 ως Base64 για τη διεύθυνση URL ; Είναι μεταφράζει "+" => "-" αλλά αυτό το post δείχνει ότι Y64 είναι μετάφραση "+" => ".". Επίσης, Base64 για τη διεύθυνση URL παραλείπει "=" για το παραγέμισμα.

    Σχόλιο από τον Michael Sheakoski - 6 Ιουλίου 2010 #

  4. @ Σάλτσα - αυτή την ενότητα είναι για base64 κωδικοποίηση μόνο. Δεδομένα URI λειτουργικότητα είναι κάτι που είναι ενσωματωμένη στο πρόγραμμα περιήγησης (ή όχι!), Και έτσι αυτή η ενότητα δεν μπορεί να κάνει τίποτα για να βοηθήσει προγράμματα περιήγησης υποστηρίζουν ότι δεν τα υποστηρίζει εγγενώς.

    Σχόλιο από Nicholas C. Zakas - 7 του Ιουλίου, 2010 #

  5. @ Michael - Y64 δεν είναι το ίδιο με Base64 για URL. Όπως αναφέρεται στην επιστολή, Y64 είναι μια παραλλαγή έχουμε χρησιμοποιήσει σε Yahoo! για μια στιγμή. Δεν είναι τίποτα τρομερά επαναστατικό, αλλά έχει επιτευχθεί ο ίδιος στόχος της διάβασης base64-κωδικοποιημένα δεδομένα σε ένα URL.

    Σχόλιο από Nicholas C. Zakas - 8 Ιουλίου 2010 #

Αφήστε ένα σχόλιο

Σημείωση: Τα σχόλια είναι moderated για πρωτάρηδες. Spam διαγράφεται.

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <blockquote cite=""> <b> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Φιλοξενείται από Yahoo!

Copyright © 2006-2010 Yahoo! παντός δικαιώματος. Πολιτική Προστασίας Προσωπικών Δεδομένων - Όροι Υπηρεσίας

Powered by WordPress για Yahoo! Web Hosting .