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