Java – Apache Commons – codificar e decodificar string

Antes de mais nada, se vc não está familiarizado com os conceitos de codificação e criptografia, entenda a diferença lendo o post http://unknownantisec.wordpress.com/2011/10/03/a-diferenca-entre-codificacao-e-criptografia/

Os dois método abaixo são especialmente utéis para ofuscar (pelo menos não ficar tão na cara) dados em lugares manjados: txt, properties, xml. Na minha opinião a vantagem de usar codificação/decoficiação é a simplicidade – a toque de caixa – de implementar o ofuscamento. Para o malandro desofuscar tem que saber qual o algoritmo que vc usou, e lembrando que não é criptografia aonde envolve chave privada para descriptografar os dados.

Dica: no GUJ tem um tópico com um exemplo (créditos Thingol) de implementação de criptografia com chave privada http://www.guj.com.br/java/35256-criptografia-de-dados-no-java

Import da lib – link com o donwload da lib no final do post

import org.apache.commons.codec.binary.Base64;
/**
* @brief Codifica string na base 64 (Encoder)
* @param string str - string à ser codigificada/criptografa
* @return string ofuscada
* @date 12/04/2012
* @see decodificaBase64Decoder(String str) Decoder
* [lib apache commons codec]
*/
public static String codificaBase64Encoder(String str) {
return new Base64().encodeToString(str.getBytes());
}

/**
* @brief DesCodifica string na base 64 (Decoder)
* @param string ofuscada - string pra à ser decodificada
* @return string desofuscada
* @date 12/04/2012
* @see codificaBase64Encoder(String str) Encoder
* [lib apache commons codec]
*/
public static String decodificaBase64Decoder(String str) {
return new String(new Base64().decode(str));
}

Exemplo de uso:

 String stringCodificada = codificaBase64Encoder("tio patinhas");
 //retorna: string ofuscada: dGlvIHBhdGluaGFz 
 String stringDecodificada = decodificaBase64Decoder(stringCodificada);
 //retorna: string desofuscada: tio patinhas

 System.out.println("- String Codificada: " + stringCodificada + "\n- String Decodificada: " + stringDecodificada);
 //retorna: Dada string ofucada 'dGlvIHBhdGluaGFz', retorna a string desofuscada: tio patinhas

Exemplo completo:
Obs. não esquecer de adicionar a lib no seu projeto.

package exemplo;

import org.apache.commons.codec.binary.Base64;

/**
 *
 * @author Ricardo
 */
public class Exemplo {

    /**
     * @brief Codifica string na base 64 (Encoder)
     * @param string str - string à ser codigificada/criptografa
     * @return string ofuscada
     * @date 12/04/2012
     * @see decodificaBase64Decoder(String str) Decoder [lib apache commons
     * codec]
     */
    public static String codificaBase64Encoder(String str) {
        return new Base64().encodeToString(str.getBytes());
    }

    /**
     * @brief DesCodifica string na base 64 (Decoder)
     * @param string ofuscada - string pra à ser decodificada
     * @return string desofuscada
     * @date 12/04/2012
     * @see codificaBase64Encoder(String str) Encoder [lib apache commons codec]
     */
    public static String decodificaBase64Decoder(String str) {
        return new String(new Base64().decode(str));
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here

        String stringCodificada = codificaBase64Encoder("tio patinhas");
        //retorna: string ofuscada: dGlvIHBhdGluaGFz 
        String stringDecodificada = decodificaBase64Decoder(stringCodificada);
        //retorna: string desofuscada: tio patinhas

        System.out.println("- String Codificada: " + stringCodificada + "\n- String Decodificada: " + stringDecodificada);
        //retorna: Dada string ofucada 'dGlvIHBhdGluaGFz', retorna a string desofuscada: tio patinhas

    }

}

Download da lib em http://commons.apache.org/codec/download_codec.cgi

É isto, se vc quiser contribuir com algum comentário, fique a vontade.

[]s
Ricardo

Anúncios

3 Comentários

Arquivado em Java, Utilidades

3 Respostas para “Java – Apache Commons – codificar e decodificar string

  1. Ola amigo não consegui chegar a o mesmo resultado que voce mostrou.
    Olhando direitinho vejo que os nomes dos metodos no sgundo exemplo de codigo divergem do primeiro e no primeiro os metodos são estaticos.
    Valeu.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s