De modo "step by step"
Vete a la página de
RiaForge y descargaté la librería As3Crypto
Descomprímela en un directorio cualquiera. Tienes dos directorios bin y com.
Copiaté el directorio com a una carpeta -con todos sus subdirectorios- Yo por ejemplo la he dejado en
c:/Mis Documentos/ASCrip32, pero la puedes dejar donde quieras
Tengo pues
c:/Mis Documentos/ASCrip32
c:/Mis Documentos/ASCrip32/com
c:/Mis Documentos/ASCrip32/com/.svn
c:/Mis Documentos/ASCrip32/com/meychi
c:/Mis Documentos/ASCrip32/com/meychi/ascrypt3
.....
Abres un nuevo proyecto de Flash y le añades como ClassPath el directorio donde la has dejado ("c:/MisDocumentos/ASCrip32").
Yo es que ahora mismo tengo el FlashDeveloper, así que le he selecionado le he dado a proyecto con el botón derecho del ratón y lo he añadido (ahora mismo no recuerdo muy bien cómo se hacía en en IDE de Flash)
Ya casi lo tenemos.
Si tienes Flash basta con que escribamos
Código ActionScript :
import com.meychi.ascrypt3.TEA;
var tea:TEA = new TEA();
var palabra_encriptada:String=tea.encrypt("Hola Mundo","qazwsxedc");
trace(palabra_encriptada);
Observa que el "método" encrypt de "tea" tiene dos argumentos, lo que quieres encriptar -en mi ejemplo "Hola Mundo"- y un string que se usa como "key", en mi ejemplo "qazwsxedc".
Si quisiéramos desencriptar deberíamos escribir
Código ActionScript :
import com.meychi.ascrypt3.TEA;
var tea:TEA = new TEA();
var palabra_desencriptada:String=tea.encrypt("7228c2659a59c9a873f190e9","qazwsxedc");
trace(palabra_desencriptada);
Vale, tú realmente no quieres encriptar y desencriptar "Hola Mundo", sino que quieres encriptar una línea como
"Nombre del Video|Nombre de cortinilla|Nombre de la mosca/logo"
Observa que he puesto una única variable separada por "|"
Así que te haces un pequeño .fla que te devuelva la palabra encriptada de cada item que quieras.
Luego sólo hace falta que recojas el valor de esa variable, la desencriptes y hagas un split
Código ActionScript :
import com.meychi.ascrypt3.TEA;
var tea:TEA = new TEA();
var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
var valueStr:String = String(paramObj["key"]); //<--si la has llamado "key"
var key_desencriptada:String=tea.encrypt(valueStr,"qazwsxedc");
var datos:Array=key_desencriptada.split("|");
//en datos[0] tienes el nombre del video
//en datos[1] tienes el nombre de la cortinilla
//en datos[2] tienes el nombre de la mosca o el logo
Vale, ves que, si descompilan el .swf, tiene la "key" (ese "qazwsxedc") y, por tanto cualquiera podría conocer esos datos. Es el problema de los algoritmos de encriptación reversibles. Se le puede dar una "vuelta" tal y como hacía
Sidedev tenía una clave codificada de modo no reversible, que obligaba al usuario a meter, comprobaba que esa clave era la correcta y se descriptaba con esa clave que había metido el usuario
1.-Se pregunta al usuario una password (por ejemplo "qazwsxedc") y guardamos su valor en una variable
2.-Se comprueba que esa password encriptada vale, p.e.""7e4231b4e1b8534ea5106bf821f0bb324987c567"
3.-Desencriptamos el valor del FlashVars con el valor de esa variable