Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] AES Encrypt y Decrypt

Estas en el tema de AES Encrypt y Decrypt en el foro de PHP en Foros del Web. Alguien puede ponerme un ejemplo de como funciona el aes_encrypt y aes decrypt, pues he tratado y leido y nada no entiendo, sencillo, no quiero ...
  #1 (permalink)  
Antiguo 23/06/2014, 08:24
Avatar de eccorposse  
Fecha de Ingreso: diciembre-2009
Ubicación: Beijing
Mensajes: 69
Antigüedad: 14 años, 4 meses
Puntos: 0
Información AES Encrypt y Decrypt

Alguien puede ponerme un ejemplo de como funciona el aes_encrypt y aes decrypt, pues he tratado y leido y nada no entiendo, sencillo, no quiero nada complejo.
  #2 (permalink)  
Antiguo 23/06/2014, 09:17
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: AES Encrypt y Decrypt

Si te refieres a las de Mysql revisa el manual: http://dev.mysql.com/doc/refman/5.0/...functions.html
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #3 (permalink)  
Antiguo 23/06/2014, 10:17
Avatar de eccorposse  
Fecha de Ingreso: diciembre-2009
Ubicación: Beijing
Mensajes: 69
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: AES Encrypt y Decrypt

Pues si estimado amigo, ya me he leido esto como 13 veces ya pero no hallo la forma de combinar esto con lo que quiero y no se como proceder con esto ya que es mi primer paso a la criptografia, de entrada ya tengo una tabla de usuarios en la BD, columna password BLOB con AES Encryption, etc..., pero, aun no es el turno de jugar con la BD y el password encriptado primero quiero ver como trabaja el encrypt y decrypt con un simple echo y un text cualquiera.

Teniendo esto (Que ya lo puse en una funcion y me da error por supuesto):
AES_ENCRYPT(str,key_str) , AES_DECRYPT(crypt_str,key_str)

str Ok - String, key_str - De que key string me habla o para que es esto.

Viendo otro ejemplo encontrado en[URL="http://php.net/manual/en/function.mcrypt-decrypt.php"]php.net[/URL]
string mcrypt_decrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )

Este no habla de nada en absoluto acerca de AES, entiendo que usa otro cifrador (mcrypt, cierto?) pero veo de nuevo $key!!! WTHIT Hahaha...
  #4 (permalink)  
Antiguo 23/06/2014, 10:22
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: AES Encrypt y Decrypt

Lo primero que tienes que hacer cuando trabajas con esto es ver si el lenguaje soporta lo que necesitas es algo básico: http://nl1.php.net/manual/en/mcrypt.ciphers.php
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #5 (permalink)  
Antiguo 23/06/2014, 10:56
Avatar de eccorposse  
Fecha de Ingreso: diciembre-2009
Ubicación: Beijing
Mensajes: 69
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: AES Encrypt y Decrypt

Por ejemplo, esto lo tome para hacer el ejercicio (copy/paste):

<?php
function encryptData($value){
$key = "7685647tfyr65413285746352413sgfh";
$text = "hola";
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = AES_ENCRYPT($key, $text);
return $crypttext;
}

echo 'Encripted: ' . encryptData('Esto es una prueba, si Hola = c927311b8b5c31cc42c8276f714cc9d0, nos vamos de party');
?>

Esto me salta: Call to undefined function AES_ENCRYPT() in ...\test\index.php on line 28 que se refiere a:

$crypttext = AES_ENCRYPT($key, $text);
  #6 (permalink)  
Antiguo 23/06/2014, 11:05
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: AES Encrypt y Decrypt

De donde sacas que esto esto te debe de funcionar ?
Código PHP:
Ver original
  1. $crypttext = AES_ENCRYPT($key, $text);
Ya leíste el manual? estas seguro que esta función existe en php?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #7 (permalink)  
Antiguo 23/06/2014, 11:12
Avatar de eccorposse  
Fecha de Ingreso: diciembre-2009
Ubicación: Beijing
Mensajes: 69
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: AES Encrypt y Decrypt

$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
  #8 (permalink)  
Antiguo 23/06/2014, 11:16
Avatar de eccorposse  
Fecha de Ingreso: diciembre-2009
Ubicación: Beijing
Mensajes: 69
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: AES Encrypt y Decrypt

Eso solo lo cambie para ver que conseguia, nada.
Bien con esto:

<?php
function encryptData($value){
$key = "7685647tfyr65413285746352413sgfh";
$text = "Hola";
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
return $crypttext;
}
echo 'Encripted: ' . encryptData('Esto es una prueba, si Hola = c927311b8b5c31cc42c8276f714cc9d0, nos vamos de party');
?>

Obtengo:
Encripted: ¦ GÍJ¯\Ä=ÄöÄkãï*gF@%Ä~Ž2 Rl
  #9 (permalink)  
Antiguo 23/06/2014, 11:18
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: AES Encrypt y Decrypt

http://www.andrew-kirkpatrick.com/20...-bit-using-iv/ viene con un ejemplo
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #10 (permalink)  
Antiguo 23/06/2014, 11:35
Avatar de eccorposse  
Fecha de Ingreso: diciembre-2009
Ubicación: Beijing
Mensajes: 69
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: AES Encrypt y Decrypt

Saludos:
Funciona perfectamente, ahora no se si la version del PHP que tengo no soporta el cipher de MySQL, en fin PHP v5.5.11.

El problema esta que Hola me devuelve:
d57f3b71c81fbc4836807dcc534a1a2308aceff16c274de041 fb8a95ea974d06

Mientras que en la BD es:
c927311b8b5c31cc42c8276f714cc9d0

Segun por la longitud deduzco que sea por los bits de cifrado 256 y que en la BD esten 128, pero al cambiar la longitud me encuentro con un error de la IV:
mcrypt_generic_init(): Iv size incorrect; supplied length: 32, needed: 16
  #11 (permalink)  
Antiguo 23/06/2014, 11:50
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: AES Encrypt y Decrypt

Bueno esta es la parte donde tienes que hacer debug, además de revisar en la doc de MySQL para ver si no requieres alguna condición adicional que necesites contemplar.
http://dev.mysql.com/doc/refman/5.5/...on_aes-encrypt
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #12 (permalink)  
Antiguo 23/06/2014, 12:19
Avatar de eccorposse  
Fecha de Ingreso: diciembre-2009
Ubicación: Beijing
Mensajes: 69
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: AES Encrypt y Decrypt

Ok gracias mi hermano por tu ayuda, bueno sigo en esto si algo tiro de nuevo por aqui mismo.
  #13 (permalink)  
Antiguo 24/06/2014, 00:27
Avatar de eccorposse  
Fecha de Ingreso: diciembre-2009
Ubicación: Beijing
Mensajes: 69
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: AES Encrypt y Decrypt

Bueno al parecer MySQL usa un tamano de bloques de 128 bits por defecto para la encriptacion con AES, el motivo por el que no hallo que me de igual la contrasena de prueba con la de la BD, pues debe ser un motivo por el IV, que por cierto cada cual pone de IV lo que quiera y esto afecta el resultado. Aunque no lo entienda del todo completo, quiero decir que he aprendido como funciona (no en su totalidad). Al ser esto un problema mejor vacio la columna de passwords y entonces inserto el password cifrado por esto, ya que tratar de debuguear el encriptador seria como tratar crackear el password y no es mi punto, tardaria semanas, meses u years, el punto es salvar las contrasenas encriptadas y sacarlas desencriptadas para compararlas cuando se logueen. Ah!, he cambiado el tamano de la $key, el $iv y el tamano de bloques del encriptador. Muchas gracias por la ayuda nuevamente hhs
  #14 (permalink)  
Antiguo 24/06/2014, 02:50
Avatar de eccorposse  
Fecha de Ingreso: diciembre-2009
Ubicación: Beijing
Mensajes: 69
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: AES Encrypt y Decrypt

Hey! Ya verifico y registro encriptadamente, el loguin funciona al pelo. Pues nada solo queria avisarte que todo al full y funcionando. Muchas gracias por tu ayuda, de verdad que se aprecia.
  #15 (permalink)  
Antiguo 25/06/2014, 09:36
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: AES Encrypt y Decrypt

El crédito es todo tuyo eccorposse
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:13.