Foros del Web » Programando para Internet » PHP »

Algoritmo Rijndael de 128 bits en php

Estas en el tema de Algoritmo Rijndael de 128 bits en php en el foro de PHP en Foros del Web. Hola a tod@s Debo encriptar y desencriptar unos datos que vienen con el algoritmo Rijndael de 128 bits, y no tengo idea!!! alguna luz??...
  #1 (permalink)  
Antiguo 05/01/2011, 15:12
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Exclamación Algoritmo Rijndael de 128 bits en php

Hola a tod@s

Debo encriptar y desencriptar unos datos que vienen con el algoritmo Rijndael de 128 bits, y no tengo idea!!! alguna luz??
  #2 (permalink)  
Antiguo 05/01/2011, 20:02
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: Algoritmo Rijndael de 128 bits en php

http://www.phpclasses.org/package/36...mentation.html
  #3 (permalink)  
Antiguo 07/01/2011, 07:00
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Respuesta: Algoritmo Rijndael de 128 bits en php

Ese lo estoy usando, pero no logra desencriptar, me llega una cadena encriptada, que al desencriptarla deberia mostrarme un xml.

  #4 (permalink)  
Antiguo 07/01/2011, 09:12
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Exclamación Longitud de caracteres algoritmo AES 128

Hola a tod@s...

Alguien sabe cómo puedo cambiar la longitud de caracteres de cifrado de la clave que se utiliza para desencriptar con el Algoritmo Rijndael de 128 bits en php.

Actualmente el script que tengo me recibe claves con una longitud de 16 caracateres... y la que me envian para desencriptar tiene más de esta longitud

Gracias!!!
  #5 (permalink)  
Antiguo 07/01/2011, 09:48
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Longitud de caracteres algoritmo AES 128

Verifica si con la librería Mcrypt puedes.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 07/01/2011, 10:27
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Exclamación Respuesta: Longitud de caracteres algoritmo AES 128

Es la que estoy usando...

Código PHP:
<?php
$td 
mcrypt_module_open('rijndael-128''''ofb''');
echo 
mcrypt_enc_get_key_size $td );
?>
Como respuesta obtengo un 32 supongo que es la longitud de la clave, pero de ahi para adelante no me deja desencriptar la información que tengo, es como si la longitud no se leyera correctamente.

Tengo una clave que debe leerme un xml que viene encriptado con rijndael-128. Y nada que logro hacerlo, al final no sé que estaré haciendo mal.
  #7 (permalink)  
Antiguo 07/01/2011, 12:40
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Algoritmo Rijndael de 128 bits en php

Te paso un ejemplo mio funcionando 100%:

Código PHP:
Ver original
  1. function hex2bin($hexdata) {
  2.   $bindata = "";
  3.   for ($i = 0; $i < strlen($hexdata); $i += 2) {
  4.     $bindata .= chr(hexdec(substr($hexdata, $i, 2)));
  5.   }
  6.   return $bindata;
  7. }
  8.  
  9.  
  10. define('CIPHER_IV', hex2bin(md5('123456789abcdefg')));
  11.  
  12.  
  13. function decrypt($code, $key) {
  14.  
  15.   //$code = hex2bin($code);
  16.   $td = mcrypt_module_open("rijndael-128", "", "cbc", "fedcba9876543210");
  17.  
  18.   mcrypt_generic_init($td, $key, "fedcba9876543210");
  19.   $decrypted = mdecrypt_generic($td, $code);
  20.  
  21.  
  22.   return $decrypted;
  23. }
  24.  
  25. function encrypt($str, $key) {
  26.   $td = mcrypt_module_open("rijndael-128", "", "cbc", "fedcba9876543210");
  27.  
  28.   mcrypt_generic_init($td, $key, "fedcba9876543210");
  29.   $encrypted = mcrypt_generic($td, $str);
  30.  
  31.  
  32.   return $encrypted;
  33. }
  34.  
  35.  
  36. $iv = "fedcba9876543210";
  37.  
  38. $key = '123456789abcdefg';
  39.  
  40.  
  41. $string = 'esta es la candea a encriptar/desencriptar';
  42.  
  43. $c = base64_encode(encrypt($string, $key));
  44. $o = decrypt(base64_decode($c), $key);

se usa base64 porque el AES devuelve caracteres no logibles.

Última edición por walterdevel; 07/01/2011 a las 12:41 Razón: PD: $iv y $key son tus llaves
  #8 (permalink)  
Antiguo 07/01/2011, 12:55
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Respuesta: Algoritmo Rijndael de 128 bits en php

Pregunta...

Qué es el $iv ??

La estructura en xml fué encriptada con modo ecb y asi mismo me entregan la clave. Y sigue sin fucionar...
  #9 (permalink)  
Antiguo 07/01/2011, 13:01
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Algoritmo Rijndael de 128 bits en php

Cita:
Iniciado por Salome Ver Mensaje
Pregunta...

Qué es el $iv ??

La estructura en xml fué encriptada con modo ecb y asi mismo me entregan la clave. Y sigue sin fucionar...
Como te dije antes, tanto $iv como $key son las dos claves. AES trabaja con dos claves. $iv la usarías acá:

Código PHP:
Ver original
  1. define('CIPHER_IV', hex2bin(md5('123456789abcdefg')));

Como ves, no integré las claves, pero está claro donde va cada una.

Te repito, lo tengo funcionando, podés poner los valores antes de enc. y después? Dificil pero capaz se puede detectar algo...
  #10 (permalink)  
Antiguo 07/01/2011, 13:05
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Respuesta: Algoritmo Rijndael de 128 bits en php

Si, me funciona con tus datos, pero el asunto es que recibo una sola clave y el string. El string ya llega encriptado, sólo tengo que desencriptarlo y que se vea con la estructura xml.

Entonces debo pedir siempre la otra clave? la solicito a quien expone el servicio web? o $iv simplemente la saco de alguna parte?
  #11 (permalink)  
Antiguo 07/01/2011, 13:09
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Algoritmo Rijndael de 128 bits en php

Las claves $iv y $key las manejás vos, tanto el que encripta como el que desencripta debe tener ambas claves. No se si responde a tu pregunta.
  #12 (permalink)  
Antiguo 07/01/2011, 13:10
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Respuesta: Algoritmo Rijndael de 128 bits en php

Pues entonces tengo es el $key no el $iv.

Así que lo que deberia hacer es solicitar a quien encripta los datos estas dos claves?
  #13 (permalink)  
Antiguo 07/01/2011, 13:13
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Algoritmo Rijndael de 128 bits en php

Cita:
Iniciado por Salome Ver Mensaje
Pues entonces tengo es el $key no el $iv.

Así que lo que deberia hacer es solicitar a quien encripta los datos estas dos claves?
Exactamente
  #14 (permalink)  
Antiguo 07/01/2011, 13:21
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Respuesta: Algoritmo Rijndael de 128 bits en php

Okas.. veremos que sucede!!

Gracias!!!
  #15 (permalink)  
Antiguo 07/01/2011, 13:38
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Respuesta: Algoritmo Rijndael de 128 bits en php

Tiene algo que ver también el modo de encripción? la cadena que me devuelven fué encriptada en modo ECB y no cbc como el algoritmo de ejemplo que me pasaste...

  #16 (permalink)  
Antiguo 07/01/2011, 13:41
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Algoritmo Rijndael de 128 bits en php

Cita:
Iniciado por Salome Ver Mensaje
Tiene algo que ver también el modo de encripción? la cadena que me devuelven fué encriptada en modo ECB y no cbc como el algoritmo de ejemplo que me pasaste...

Si, tiene que ver. Son diferentes tipos y el algoritmo es diferente.
  #17 (permalink)  
Antiguo 07/01/2011, 13:48
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Exclamación Respuesta: Algoritmo Rijndael de 128 bits en php

Changos!!! entonces tu algoritmo no me sirve... mmm mmm porque ellos la cadena me la envian encriptada en ese modo ECB.
  #18 (permalink)  
Antiguo 07/01/2011, 14:03
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: Algoritmo Rijndael de 128 bits en php

Con ecb:

Código PHP:
Ver original
  1. function decrypt($code, $key) {
  2.  
  3.   //$code = hex2bin($code);
  4.   $td = mcrypt_module_open("rijndael-128", "", "ecb", "fedcba9876543210");
  5.  
  6.   mcrypt_generic_init($td, $key, "fedcba9876543210");
  7.   $decrypted = mdecrypt_generic($td, $code);
  8.  
  9.  
  10.   return $decrypted;
  11. }
  12.  
  13. function encrypt($str, $key) {
  14.   $td = mcrypt_module_open("rijndael-128", "", "ecb", "fedcba9876543210");
  15.  
  16.   mcrypt_generic_init($td, $key, "fedcba9876543210");
  17.   $encrypted = mcrypt_generic($td, $str);
  18.  
  19.  
  20.   return $encrypted;
  21. }

Lo acabo de probar y funciona. Saludos!

Etiquetas: algoritmos
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 21:48.