# Articulos

Buscar:

PAGINACIÓN:

> Función para generar generar clave aleatoria

Hace poco tuve que crear un sistema para subir ficheros a un servidor (para una web de una empresa), y claro, como es normal, no pueden subirse los ficheros así sin más, y hay que aplicarles cierta ofuscación para que no queden al aire.

Para eso pensé en generar una clave aleatoria y añadirla al final del nombre del fichero, tipo imageshack. Estaba claro que haría falta la función rand(), pero esta, por si sola, no es suficente (en versiones inferiores a php 4.2.0), ya que no es del todo aleatoria y hay que alimentar su aleatoriedad (creo que le estoy dando unas cuantas patadas al diccionario).

Para generar aleatoriedad utilicé la siguiente función (extraída del manual de php.net (que repito NO es necesario a partir de php 4.2.0)

function randomizar()
{
  list($usec, $sec) = explode(' ', microtime());
  return (float) $sec + ((float) $usec * 100000);
}


Y para finalizar, generé las claves con la siguiente función

function RandomKey($long = 1)
{
	$key = '';
	srand(randomizar());
	for ($i = 0; $i <= $long; $i++)
	{
		$r = rand(1,3); //Generamos más aleatoriedad, pudiendo insertar entre un número (1), una letra mayúscula (2) o una letra minúscula (3)
		switch ($r)
		{
			case 1:
					$key .= chr(rand(48,57)); // del 0 al 9
					break;
			case 2: 
					$key .= chr(rand(65,90)); // de la 'A' a la 'Z'
					break;
			case 3: 
					$key .= chr(rand(97,122)); // de la 'a' a la 'z'
					break;
		}
		
	}
	return $key;
}


Es bastante sencilla pero muy útil. La explicación de por qué un switch es bien simple: así es más aleatorio aún. Dado que primero elige aleatoriamente un valor del 1 al 3 (siendo 1 los números del 0 al 9, 2 las letras mayúsculas de la 'A' a la 'Z' y el 3 las minúsculas de la 'a' a la 'z'), y luego elige un valor aleatorio dentro de estas, basándose en el código ascii.



Escrito por: ToRDeN @ 15/04/2008 (17:57) ~ [ComentarComentar (0 comentarios y 139 lecturas)]
Categoría: Tutoriales, PHP Tags: php, generar clave, aleatoria, tutorial, funcion, random, random key

Hay 0 comentario(s) referentes al artículo


Tu nick: