online - descifrar un texto encriptado as3crypto en PHP
encriptar y desencriptar php (2)
Traté de cifrar un texto en as3crypto a través de la aplicación de demostración.
ahora estoy tratando de descifrar el texto encriptado a través de php, pero parece que el texto no está correctamente descifrado. ¿Alguien sabe cómo descifrarlo correctamente a través de PHP? o lo estoy haciendo mal? por favor iluminame...
aquí está el escenario:
cifra esto en http://crypto.hurlant.com/demo/ :
encriptación: AES
modo: CBC
relleno: ninguno
clave: 11918f8bcd112e92744125008722050c
texto: Lorem ipsum dolor sit amet, consectetur adipiscing elit. En ut massa nec purus laoreet posuere quis vitae tortor.
vector inicializar: déjelo en blanco
presione encriptar seleccione base64 y copie el texto de cifrado.
hacer un script php que tenga estos códigos y ejecutarlo:
$ cipher = MCRYPT_RIJNDAEL_128;
$ mode = MCRYPT_MODE_CBC;
$ key = "11918f8bcd112e92744125008722050c";
$ cipher = "COLOCA EL TEXTO CIPHER AQUÍ ...";
$ data = base64_decode ($ cipher);
echo mcrypt_decrypt ($ cipher, $ key, $ data, $ mode);
el problema probablemente radica en tu clave. Si bien puede alimentar una cadena hexadecimal a as3crypto y sabrá qué hacer con ella, mcrypt_decrypt
interpretará cada carácter como su valor subyacente ASCII (como a = 97) en lugar de su valor hexadecimal (a = 10). Usa el método hex2bin para convertir la cadena hexadecimal en una cadena de bytes, y tu descifrado probablemente funcione bien.
también, un problema puede descansar con diferentes ideas de un IV predeterminado (vector de inicialización) entre as3crypto y php. Como está utilizando el modo CBC, debe especificar un IV, al igual que una buena práctica de seguridad. También tenga en cuenta las posibles dificultades similares a las de su clave, de especificar una cadena hexagonal en as3 y la necesidad de convertirla en php.
Esto funcionaría:
Código PHP:
//notice that $key and $iv length must be 16 chars long! ex: 1234567890123456
function decrypt($data,$key,$iv)
{
$decr= mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($data), MCRYPT_MODE_CBC, $iv);
return $decr;
}
Y aquí está el código AS3
//notice that $key and $iv length must be 16 chars long! ex: 1234567890123456
private function encrypt(input:String,decrKey:String,decrIV:String):String
{
var inputBA:ByteArray=Hex.toArray(Hex.fromString(input));
var key:ByteArray = Hex.toArray(Hex.fromString(decrKey));
var pad:IPad = new NullPad();
var aes:ICipher = Crypto.getCipher("aes-cbc", key, pad);
var ivmode:IVMode = aes as IVMode;
ivmode.IV = Hex.toArray(Hex.fromString(decrIV));
aes.encrypt(inputBA);
return Base64.encodeByteArray( inputBA);
}