Estoy empezando a usar encriptacion en Flash, ahora estoy obligado por un pedido expreso del cliente, pero lo estoy encontrando util para aplicarlo en el futuro para todos los proyectos, especialmente cuando uno guarda cookies y variables shared object.
Hasta ahora el algoritmo que más me gustó es el RC4 (hay bastante información en la web y es un algoritmo que no consume mucho proceso)
Actionscript y PHP
Encriptar y desencriptar no es el problema sino enviar y recibir los datos desde Flash a PHP (y viceversa)
Flash genera el resultado de la encriptacion como un string de los valores hexadecimales concatenados, ésto permite pasar los valores directamente sin un encoding en especial ya que la combinación de algunos caracteres: A B C D E F 0 1 2 3 4 5 6 7 8 9.
La clave está en el PHP que al recibir los datos (por GET o POST) hay que usar la funcion pack() para convertir esos datos datos enviados desde Actionscript en datos que la función decript() pueda usar
$data = pack("H*", $data);
y para que el PHP pueda generar datos que Flash entienda se tiene que usar la funcion bin2hex()
$data = bin2hex($encripted_bin_data);
Librerias Actionscript
Ejemplo en AS3
package com { import be.boulevart.as3.security.Encryption; import be.boulevart.as3.security.EncryptionTypes; public class Main() { private var keyString:String = "my_super_secret_key"; public function Main() { var ec:String; var dc:String; ec = encrypt("TEXTO A ENCRIPTAR"); trace(ec); dc = decrypt(ec); trace(dc); } private function encrypt(txt:String = ''):String { e = new Encryption(EncryptionTypes.RC4(), txt , keyString, null, null, null); e.encrypt(); return(e.getInput()); } private function decrypt(txt:String = ''):String { e = new Encryption(EncryptionTypes.RC4(), txt , keyString, null, null, null); e.decrypt(); return(e.getInput()); } } }
En el mismo link de descarga directa hay mas ejemplos con otros algoritmos y ejemplos en AS2
Descarga Directa: http://labs.boulevart.be/index.php/2007/05/23/encryption-in-as2-and-as3/
Librerias PHP4
Ejemplo de uso
require_once('class.rc4crypt.php'); keyString = "my_super_secret_key"; ec = $GET["flash_data"]; dc = decrypt(ec); echo(dc); function decrypt($data) { $data = pack("H*", $data); return(rc4crypt::decrypt(KEY, $data)); } function encrypt($data) { return(bin2hex(rc4crypt::encrypt(KEY, $data))); }
(Junto con la descarga hay otro ejemplo mas completo)
Descarga directa: http://sourceforge.net/projects/rc4crypt/