Recentemente me deparei com um problema aparentemente simples, mas que me custou mais tempo do que o previsto para resolvê-lo por falta de um material mais claro e direto para auxílio que pudesse ser encontrado na web.

Como agora já desvendei a solução do problema, resolvi deixar registrado esta dica aqui no blog para que outros programadores não percam tempo.

Caso deseje enviar algum dado criptografado do Flex para uma outra linguagem (como o PHP) que trabalhe no server-side da aplicação, podemos utilizar o algoritmo de hash MD5.

Nota: Para este tutorial estou utilizando o Adobe Flex Builder 3.

A método responsável por fazer a criptografia é a MD5.hash(), passando como parâmetro a string a ser codificada. O Flex não vem nativamente com a biblioteca que contém esta função, como tantos outros pacotes que já vem inclusos como o mx, flash e com.adobe, portanto, é necessário baixar a lib as3corelib.swc, que pode ser obtido através deste link: http://as3corelib.googlecode.com/files/as3corelib-.92.1.zip

Após baixar o arquivo zip e extrair, verá que o arquivo continha 2 diretórios. Acesse o diretório as3corelib-.92.1/ e em seguida o diretório lib/. Dentro do diretório lib/ encontra-se o arquivo que precisamos: as3corelib.swc! Copie este arquivo para dentro do diretório libs/ do seu projeto Flex.

Agora dentro do Flex Builder, clique nas propriedades do projeto. A seguir, clique em Flex Build Path no menu (passo 1), depois na aba Library path e no diretórios libs (passo 2), e por fim, clique no botão “Add SWC..” (passo 3), localize o arquivo as3corelib.swc que copiamos e clique no botão “OK”.


Figura 1 - Etapas de anexo da lib ao projeto


O Flex Builder dará um build no workspace e então poderemos utilizar o MD5.

Para utilizar o método precisamos importar a classe MD5, usando a seguinte linha no Action Script:
import com.adobe.crypto.MD5;
Pronto!!! Já podemos criptografar qualquer string. Segue um exemplo de como criptografar:
var cript:String = MD5.hash(senha.text);
Espero que façam bom proveito!
:-)







Sobre o Autor:
Guilherme Oliveira
Guilherme Oliveira trabalha com desenvolvimento de software a mais de 10 anos. É técnico em informática, bacharel em ciência da computação, especialista em engenharia de software, além de ser Oracle Certified Java Programmer 6 (OCJP 6). Suas áreas preferidas são desenvolvimento web e games.

  1. gravatar

    # by victor hugo - 6 de janeiro de 2011 às 15:34

    muito bom seu tópico. Mas qual a forma de decriptografar com md5?

  2. gravatar

    # by Guilherme - 6 de janeiro de 2011 às 15:41

    Não há como descriptografar com MD5. A utilização dessa forma de criptografia é interessante para comparar com outro valor md5, por exemplo:

    1. Vc tem um banco de dados com a senha do usuario em MD5

    2. Ao fazer login, vc codifica a senha que o usuário digitou em MD5 antes de enviar uma requisição de consulta ao banco, e compara se as duas senhas em MD5 conferem. Essa forma é interessante de utilizar para evitar que os dados sejam extraviados na rede, durante a requisição ao banco de dados.

    :)

  3. gravatar

    # by Wemerson - 17 de março de 2011 às 16:31

    Opa!!!

    Parabéns pelo post... Foi bem na veia do pescoço.

    Eu tava precisando de algo assim pra um projeto AIR que tô trabalhando...

    Sabe se tem md5/sha1 pra arquivo também?

    A idéia é baixar um arquivo e quando concluir o download, gerar um md5 ou sha1 do mesmo e comparar com o hash do arquivo no servidor...