Foros del Web » Programando para Internet » PHP »

Cómo generar una clave random?

Estas en el tema de Cómo generar una clave random? en el foro de PHP en Foros del Web. Buenas, Tengo un problema, necesito generar una clave random que no se repita nunca, que esté encriptada con el ID autonumerico del usuario (tabla usuarios) ...
  #1 (permalink)  
Antiguo 08/05/2012, 15:05
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Cómo generar una clave random?

Buenas,

Tengo un problema, necesito generar una clave random que no se repita nunca, que esté encriptada con el ID autonumerico del usuario (tabla usuarios) y que pueda desencriptarla para volver a obtener el ID del usuario.

He probado varios metodos, md5, sha, etc... pero son muy largos, necesito encriptar el ID del usuario en 7 caracteres alfanumericos si es posible.

¿Se os ocurre alguna forma de hacerlo? es viable?

Tengo la siguiente función para generar claves aleatorias pero no se de que manera la puedo combinar con el ID del usuario y que luego al recibirla la pueda desencriptar y me dé el ID del usuario.

Código PHP:
Ver original
  1. randomKeygen($length=7){
  2.         $key = '';
  3.         list($usec, $sec) = explode(' ', microtime());
  4.         mt_srand((float) $sec + ((float) $usec * 100000));
  5.        
  6.         $inputs = array_merge(range('z','a'),range(0,9),range('A','Z'));
  7.  
  8.         for($i=0; $i<$length; $i++)
  9.         {
  10.             $key .= $inputs{mt_rand(0,61)};
  11.         }
  12.         return $key;
  13.     }

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 08/05/2012, 15:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Cómo generar una clave random?

md5, sha1, etc. son algoritmos de hasheo, no sirven para encriptar, para eso necesitas usar crypt() y generar una clave privada y una publica para poder volver a obtener el ID que necesitas.

Saludos.
  #3 (permalink)  
Antiguo 08/05/2012, 16:39
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Cómo generar una clave random?

Cita:
Iniciado por GatorV Ver Mensaje
md5, sha1, etc. son algoritmos de hasheo, no sirven para encriptar, para eso necesitas usar crypt() y generar una clave privada y una publica para poder volver a obtener el ID que necesitas.

Saludos.
Gracias GatorV,

Entiendo que funcionaría de esta forma para encriptar, pero no consigo ver como desencriptarlo. Crypt no es de un único sentido? si es así, no acabo de ver como me puede servir, pues si te dan la cadena encriptada no sabrás cómo desencriptarla si no la comparas con otra clave encriptada

Código PHP:
Ver original
  1. $idUser = '10';
  2. $resultado = crypt($idUser, 'm1s4lt');
  3. echo $resultado;

Yo lo que quiero, es que si recibo m1hei41R es saber a qué usuario se refiere utilizando alguna función que desencripte esa cadena.

Muchas gracias
  #4 (permalink)  
Antiguo 08/05/2012, 16:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Cómo generar una clave random?

Lee lo siguiente: http://www.php.net/manual/en/mcrypt.examples.php
  #5 (permalink)  
Antiguo 08/05/2012, 16:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Cómo generar una clave random?

o lo siguiente: http://www.php.net/manual/en/book.openssl.php
  #6 (permalink)  
Antiguo 09/05/2012, 00:07
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 1 mes
Puntos: 20
Respuesta: Cómo generar una clave random?

Muchas gracias, lo revisaré.

Etiquetas: clave, tabla, usuarios
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 19:26.