En muchas ocasiones tenemos información que debemos guardar y que no queremos que sea accesible directamente por el usuario. Por ejemplo, archivos de configuración de aplicaciones AIR o archivos de texto con variables. La solución es escriptar ese texto para que no sea entendible si el usuario accede a él directamente.
Para encriptar un texto en actionscript 3 lo primero que hacemos es descargarnos esta librería que nos permitirá utilizar varios algoritmos de encriptación.
Ahora nos crearemos una clase que utilice el cifrado en TEA. Este algoritmo requiere de un texto clave que tendrá que ser el mismo a la hora de encriptar y a la hora de desencriptar.
Código :
package com.cristalab.utils.security
{
import com.meychi.ascrypt3.TEA;
//-------------------------------------------------------------
public class EncryptUtils
{
internal static const ENCRYPTION_KEY:String = "mi_contraseña_de_encriptado";
//-------------------------------------------------------------
public static function encryptString(s:String):String
{
var tea:TEA = new TEA();
var encryptedString:String = tea.encrypt(s, ENCRYPTION_KEY);
return encryptedString;
}
public static function decryptString(s:String):String
{
var tea:TEA = new TEA();
var decryptedString:String = tea.decrypt(s, ENCRYPTION_KEY);
return decryptedString;
}
}
}
La utilización de esta clase para encriptar texto sería:
Código :
import com.cristalab.utils.security;
var texto:String = "Lo que sea";
var texto_encriptado:String = EncryptUtils.encryptString(texto);
Y para desencriptar:
Código :
var texto:String = EncryptUtils.decryptString(texto_encriptado);
En esta clase de ejemplo la palabra clave para codificar esta añadida dentro de la misma clase, pero podríamos haber creado la clase haciendo que ese String le viniese como parámetro y así utilizar diferentes keys para diferentes proyectos. Lo que ha de estar claro es que para desencriptar un texto deberemos utilizar el mismo key que utilizamos para encriptarlo.
Para aumentar un poco el tip. TEA es el acrónimo de Tiny Encryption Algorithm. Porque es muy fácil de implementar. Por su naturaleza, es crackeable con suficiente tiempo y ataques de fuerza bruta, porque matemáticamente pueden generarse hasta tres claves equivalentes por clave.
Nunca había visto una implementación en AS3. Muy cool Z. Por:Freddie
MD5 sería más para proteger contraseñas en una base de datos, ya que un hash de MD5 no se puede desencriptar. Por:Zguillez
Xyrer-blog :
osea que sigue siendo mejor el MD5?
Como dice Z, MD5 es un algoritmo de cifrado de un sólo camino. Una vez usado, no se puede desencriptar su contenido. El algoritmo de Z es de dos caminos y con la clave correcta puede descifrarse. Casi todos los algoritmos de dos caminos son crackeables, excepto PGP que usa claves públicas y privadas. Pero es un cuento ya innecesario en lo que a este ejemplo compite. Por:Freddie