Flash/Flex+PHP; Encriptação AES 256

Flash/Flex+PHP; Encriptação AES 256

Olá fieis leitores!!

Imagem: pt.fotolia.com

Deve ter reparado que tenho andado meio ausente, deve-se ao facto de andar com bastante trabalho e da minha pequena Luana estar cada vez mais crescida e não fica quieta :) Mas bom, não se pode ter tudo não é verdade??! Ela é Linda!!

Bom, venho aqui escrever este artigo devido a uma dúvida que me foi colocada no fórum (http://forum.msdevstudio.com) onde me era perguntado como implementar uma encriptação 512 bits usando a conhecida libraria as3crypto. (http://code.google.com/p/as3crypto/)

Apesar de achar esta libraria bem completa, também a acho demasiado complicada.. foi por isso que quando pensei em implementar uma solução destas no passado andei à procura de uma outra solução que não fizesse apenas a encriptação em Flex/As3, mas também que a mesma string pudesse ser desencriptada no PHP. Encontrei depois de algumas pesquisas uma implementação super interessante no blog (http://www.lostinactionscript.com) que faz precisamente isto. Ecriptação AES duas vias (Flex<->PHP) e posso afirmar que até hoje não encontrei qualquer problema usando este mesmo método, apesar de ter que usar uma biblioteca diferente no php.

No fórum, perguntavam-me como implementar encriptação 512 bits (não enumerava qual o algoritmo, no entanto sugeri o AES 256). Na minha humilde opinião, uma encriptação AES usando  256 bits é mais que suficiente visto que, caso não saibam, o AES é dos algoritmos mais seguros do mundo e que se bem implementado com as devidas preocupações com chaves, é teoricamente impossível de desencriptar. Este algoritmo é largamente conhecido e até usado para encriptar dados de documentos do Governo dos Estados Unidos.

Esta implementação no flex e no php é bem simples, basta fazerem o download do arquivo usado no site lostinactionscript.com (download aqui) e no nele (.zip) encontram a class/caminho:  AES/com/lia/crypto/AES.as. Esta class será a que vamos usar no Flex, para isso criem a mesma estrutura de pastas no vosso projeto flex e copiem esta class para lá. (com/lia/crypto/Aes.as).

No php, as classes para download podem ser encontradas aqui: http://www.movable-type.co.uk/scripts/aes-php.html (Devem criar dois ficheiros .php com o conteúdo apresentado nesse artigo. AesCtr.php e Aes.php)

Depois disto, basta no flex usar:

protected function encripta() :void {

var stringEncriptada:String = AES.encrypt(“Texto a encriptar”, “chave”, 256); //Usamos 256bits

}

E no php para desencriptar:

function desencripta() {

$stringDesencriptada = AesCtr::decrypt($stringEncriptada,”chave”, 256);

}

Para o processo inverso (encriptar no php e desencriptar no flex), temos no PHP:

function encripta() {

$stringEncriptada = AesCtr::encrypt(“Texto a encriptar”,”chave”,256);

}

e no Flex:

protected function desencripta():void {

var stringDesencriptada:String = AES.decrypt(stringEncriptada, “chave”, 256);

}

E pronto, temos o nosso sistema para encriptação / desencriptação em ambos os sentidos. Torna-se muito util quando têm que passar dados mais sensí­veis via AMF (zend, amfphp. weborb) já que ao enviar os dados cifrados tornasse muito mais seguro. Fica o aviso, este algoritmo é seguro o suficiente para grande partes das necessidades, mas não esqueça de usar uma chave segura visto que a segurança depende sempre da implementação. Não é o algoritmo que têm falhas, nós que que as causamos! :)

Bom, espero que tenha seja util nos vossos projetos.

Abraço.


Leave a Comment

Post