A entrada e saída dos algoritmos criptográficos são vectores de octetos (byte[]).
Muitas vezes é necessário representar conteúdos cifrados em ficheiros de texto, como acontece com documentos XML, por exemplo. Neste caso, a representação de dados não pode ser directa, porque existem muitos octetos que não correspondem a caracteres válidos.
Sendo assim, uma solução possível é usar codificação de base 64.
A codificação de base 64 foi definida originalmente para anexos do correio electrónico: RFC 2045: "Multipurpose Internet Mail Extensions".
A codificação de base 64 usa o sub-conjunto de 65 caracteres do US-ASCII que são os caracteres mais "universais", ou seja, caracteres que são iguais em practicamente todos os códigos: A-Z, a-z, 0-9, +, / = pad.
24 bits são representados em 4 caracteres
6 bits úteis por caracter
Aumenta tamanho do conteúdo em 33%,
por causa dos 2 bits "desperdiçados".
O objecto javax.xml.bind.DatatypeConverter disponível na plataforma Java desde a versão 6 permite efectuar a conversão:
// import helper methods to print byte[] import static javax.xml.bind.DatatypeConverter.parseBase64Binary; import static javax.xml.bind.DatatypeConverter.printBase64Binary; ... // encoding binary data with base 64 System.out.println("Encoding to Base64 ..."); String result = printBase64Binary(cipherBytes); ... // decoding string in base 64 System.out.println("Decoding from Base64 ..."); byte[] result = parseBase64Binary(cipherText);
© Docentes de Sistemas Distribuídos, DEI, IST, UTL