Nella Galleria 3 YUI: la codifica Base64 e Y64

6 Luglio 2010 alle 9:39 pm da Nicholas C. Zakas | In Development | 5 commenti

Nicholas C. Zakas ( @ slicknet su Twitter) è l'ingegnere frontend di piombo sul Yahoo! homepage , un YUI collaboratore, e autore di JavaScript professionale per gli sviluppatori web e il nuovo rilascio, JavaScript ad alte prestazioni .

Base64 encoding è stato originariamente progettato per permettere ai dati senza perdita di dati che passano tra 8-bit e 7-bit. L'esempio principale del suo utilizzo è in email, che tradizionalmente utilizzati 7-bit per trasferire la posta elettronica, mentre quelli di noi a casa i nostri computer stavano usando sistemi a 8 bit. Questo è diventato particolarmente importante con i testi allegati di posta elettronica, che sarebbe MIME codificato in base64 e inviati insieme alla destinazione.

Più recentemente, la codifica base64 ha guadagnato popolarità per il suo uso nei dati URI. Per chi non lo sapesse, i dati URI sono un modo di incorporare all'interno di file HTML e CSS. Uno dei formati di dati supportati URI è base64.

La codifica Base64 è ancora usata frequentemente nella programmazione, soprattutto per l'offuscamento, ma anche per il trasporto sicuro dei dati. Mentre alcuni browser hanno nativa codifica base64 e decodifica, questa funzionalità non è definita in ogni punto di vista, né comunemente disponibili in tutti i browser. Il YUI 3 Galleria modulo Base64 fornisce un'implementazione comune di codifica base64 che può essere utilizzato in tutti A-grade browser. Per utilizzare il modulo Base64, includere il seguente pagina:

<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> 

Il modulo Base64 espone un Base64 oggetto con due metodi: encode() e decode() . I metodi sono utilizzati come segue:

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

Insieme con il modulo Base64, ho anche scritto una Y64 modulo . Y64 è una variante base64 utilizzato a Yahoo! base64, quando le informazioni devono essere trasmesse come parte di una richiesta GET. Base64 regolare ha tre personaggi che non sono sicuro per le URL: plus (+), barra (/), ed è uguale (=). (.) Y64 codifica sostituisce questi con dot, underscore (_) e trattino (-), rispettivamente. Questo permette Y64-codificati le stringhe da inserire nel URL senza preoccuparsi URL fuga dei personaggi.

Il modulo Y64 richiede il modulo Base64, che viene automaticamente tirato in quando si include il seguente codice:

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

Il modulo espone un Y64 Y64 oggetto con encode() e decode() i metodi, in modo che l'uso è la stessa con la Base64 oggetto:

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

Se avete intenzione di passare codificata in base64 di una stringa URL, si può prendere in considerazione come alternativa Y64.

Si prega di tenere presente che base64 e la Y64 non sono algoritmi di crittografia. Gli algoritmi di crittografia sono progettate per proteggere i dati da occhi indiscreti. Base64 e Y64 sono encoding algoritmi progettati per trasmettere i dati senza il rischio di corruzione dei dati - il tipo di corruzione che si verifica quando i dati vengono trasferiti da un sistema all'altro e può essere codificato e decodificato in molti formati diversi prima di arrivare alla destinazione finale.

Un buon esempio di questo è link-sharing funzionalità. Supponiamo che stai condividendo un link passando a un entrypoint, come http://www.example.com?share=<url> . L' url deve essere URL-codificata per la trasmissione sicura, ma che si URL può anche contenere dati con codifica URL. E che ci crediate o no, a volte i browser possono mis-encoded URL prima della trasmissione (è raro, ma non senza precedenti). Per un maggiore livello di fiducia che i dati arriveranno in buona forma, è possibile utilizzare la codifica Y64:

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

La destinazione sarebbe quindi decodificare il valore URL. Poiché questo valore non richiederà URL-encoding, le possibilità di diventare dei dati danneggiati durante la trasmissione sono diminuiti.

Non tutti avranno bisogno di usare la codifica base64 o Y64 nelle proprie applicazioni web, ma questi possono essere strumenti molto potenti per tenere nella tasca posteriore.

Letture consigliate:

Condividi ed estendere: Segnalibro con Del.icio.us | Digg it! | reddit!

5 commenti

  1. Si utilizza un interruttore per carattere ... che è abbastanza orribile. Ho scritto e pubblicato un esempio, qualche anno fa:

    Base64 semplici codifica / decodifica - Javascript

    Si noti che con un piccolo tweak per la funzione di costruzione anonima, si potrebbe generare un altrettanto efficienti Y64 funzioni.

    Sentitevi liberi di riutilizzare quello che volete.

    Commento di Preston L. Bannister - 6 Luglio 2010 #

  2. L'articolo dice che è possibile utilizzare un URI dati per incorporare file all'interno del documento HTML. Ciò che la funzionalità di supporto per i moduli (in A-grade browser)?

    Commento di Sause - 6 Luglio 2010 #

  3. Per chiarire, stai usando le stesse convenzioni in Y64, come Base64 per l'URL ? Si traduce "+" => "-" ma questo post suggerisce che la Y64 sta traducendo "+" => ".". Inoltre, per Base64 URL omette "=" per il riempimento.

    Commento di Michael Sheakoski - 6 lug 2010 #

  4. @ Sause - Questo modulo è solo per la codifica base64. La funzionalità URI dei dati è qualcosa che è integrato nel browser (o meno!), E quindi questo modulo non può fare nulla per aiutare i navigatori di supporto che non li supportano in modo nativo.

    Commento di Nicholas Zakas C. - 7 Luglio 2010 #

  5. @ Michael - Y64 non è la stessa Base64 per la URL. Come indicato nel post, Y64 è una variante che abbiamo usato a Yahoo! per un po '. Non è niente di terribile rivoluzionario, ma non raggiungere lo stesso obiettivo di trasmettere dati con codifica base64 in un URL.

    Commento di Nicholas Zakas C. - 8 Luglio 2010 #

Siamo spiacenti, il commento forma è chiusa in questo momento.

Ospitato da Yahoo!

Copyright © 2006-2012 Yahoo! Inc. Tutti i diritti riservati. Privacy Policy - Termini di servizio

Powered by WordPress su Yahoo! Web Hosting .