No YUI 3 Gallery: Base64 e Y64 codificação
06 de julho de 2010 às 09:39 por Nicholas C. Zakas | Em Desenvolvimento | 5 ComentáriosNicholas C. Zakas ( @ slicknet no Twitter) é o engenheiro frontend levar na Yahoo! homepage , a YUI contribuinte, e autor do livro Professional JavaScript para desenvolvedores da web e do recém-lançado, de alto desempenho de JavaScript .
Base64 codificação foi originalmente concebido para permitir a passagem de dados sem perdas entre 8-bit e-bit sistemas 7. O principal exemplo de seu uso está no e-mail, que tradicionalmente utilizados sistemas de 7 bits para transferir o e-mail, enquanto aqueles de nós em casa em nossos computadores estivessem usando sistemas de 8 bits. Isso se tornou especialmente importante com anexos de texto não-mail, que seriam codificados em MIME base64 e enviado juntamente com o destino.
Mais recentemente, a codificação base64 ganhou popularidade para seu uso em URIs dados. Para quem não sabe, URIs dados são uma maneira de incorporar os arquivos dentro do HTML e CSS. Um dos dados que suportaram formatos URI é base64.
A codificação Base64 ainda é usado com freqüência na programação, principalmente para ofuscamento, mas também para o transporte de dados seguro. Embora alguns navegadores possuem codificação e decodificação de base64 nativas, esta funcionalidade não está definido em qualquer norma, nem comumente disponíveis em todos os navegadores. O YUI 3 Galeria módulo Base64 fornece uma implementação comum de codificação base64 que pode ser usado em todos os navegadores da classe A. Para usar o módulo Base64, incluir o seguinte na sua página:
<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> O módulo Base64 expõe um Base64 objeto com dois métodos: encode() e decode() . Os métodos são usados como segue:
var decodedText = Y.Base64.decode(encodedText); var encodedText2 = Y.Base64.encode(rawText); Juntamente com o módulo Base64, eu também escrevi um módulo Y64 . Y64 é uma variante base64 usado em Yahoo! quando base64 necessidades de informação para ser transmitido como parte de uma solicitação GET. Regular base64 tem três personagens que não são de URL segura: adição (+), barra (/), e igual (=). (.) Codificação Y64 substitui-los com um ponto, sublinhado (_) e traço (-), respectivamente. Isso permite que strings Y64-codificado para ser colocado em URLs sem se preocupar com URL escapar dos personagens.
O módulo Y64 requer o módulo Base64, que é puxado automaticamente quando você incluir o seguinte código:
YUI({ gallery: 'gallery-2010.06.16-19-51' }).use('gallery-y64', function(Y) { //your code here }); O módulo apresenta um Y64 Y64 objeto com encode() e decode() métodos, por isso o uso é o mesmo que com a Base64 objeto:
var decodedText = Y.Y64.decode(encodedText); var encodedText2 = Y.Y64.encode(rawText); Se você está pensando em passar dados base64-codificado em uma seqüência de URL, você pode querer considerar Y64 como uma alternativa.
Por favor, tenha em mente que base64 e Y64 não são algoritmos de criptografia. algoritmos de criptografia são projetados para proteger os dados de olhos curiosos. Base64 e Y64 são encoding algoritmos projetados para transmitir dados sem o risco de corrupção de dados - o tipo de corrupção que acontece quando os dados são transferidos de um sistema para o outro e pode ser codificada e decodificada em vários formatos diferentes antes de chegar ao destino final.
Um bom exemplo disto é a funcionalidade de troca de links. Suponha que você está compartilhando um link passando-a para um ponto de entrada, como http://www.example.com?share=<url> . A url deve ser codificado no URL para a transmissão segura, mas a URL em si também pode conter dados codificados de URL. E, acredite ou não, às vezes os navegadores podem URLs mal codificadas antes da transmissão (é raro, mas não inédito). Para um maior nível de confiança de que os dados vão chegar em boa forma, poderá usar a codificação Y64:
var destination = "http://www.example.com?share=" + Y.Y64.encode(url); O destino, então, decodificar o valor de URL. Como esse valor não vai exigir a codificação de URL, as chances de tornar os dados corrompidos durante a transmissão são diminuídas.
Nem todo mundo vai precisar usar base64 ou Y64 codificação em suas aplicações web, mas estes podem ser ferramentas muito poderosas para se manter em seu bolso traseiro.
Leitura adicional:
Compartilhe e ampliar: Bookmark com del.icio.us | digg it! | reddit!
5 Comentários »
RSS feed para comentários neste post. TrackBack URI
Deixe um comentário

Copyright © 2006-2010 Yahoo! Inc. Todos os direitos reservados. Política de Privacidade - Termos de Serviço
Powered by WordPress em Yahoo! Web Hosting .


Você está usando um interruptor para cada personagem ... que é bastante horrível. Eu escrevi e postei um exemplo de alguns anos atrás:
Base64 encode Simples / decodificar - Javascript
Observe que com um pequeno puxão para a função de construtor anônimo, você pode gerar um igualmente eficientes Y64 funções.
Sinta-se livre para reutilizar o que quiser.
Comentário por Preston L. Bannister - 06 de julho de 2010 #
O artigo menciona que você pode usar uma base de dados URI para incorporar arquivos dentro do documento HTML. Será que este suporte ao módulo que a funcionalidade (entre os navegadores de grau)?
Comentário por Sause - 06 de julho de 2010 #
Para esclarecer, você está usando as mesmas convenções em Y64 como Base64 para URL ? Traduz-se "+" => "-" mas este post sugere que Y64 está traduzindo "+" => "".. Além disso, omite Base64 para URL "=" para preenchimento.
Comentário por Sheakoski Michael - 06 de julho de 2010 #
Sause @ - este módulo é apenas para a codificação base64. Dados funcionalidade URI é algo que está embutido no navegador (ou não!), E por isso este módulo não pode fazer nada para ajudar os navegadores de apoio que não os suportam nativamente.
Comentário por Nicholas C. Zakas - 07 julho de 2010 #
@ Michael - Y64 não é o mesmo que Base64 para URL. Como dito no post, Y64 é uma variante que estamos usando em Yahoo! por um tempo. Não é nada terrivelmente revolucionária, mas não atingir o mesmo objetivo de transmitir dados base64-codificado em uma URL.
Comentário por Nicholas C. Zakas - 8 de julho de 2010 #