Crear ID "a lo youtube"

Pues estoy haciendo una web y me han pedido crear unos códigos del estilo youtube: A48F2 por ejemplo.
Deben ser IDs únicos no consecutivos. ¿Sabéis de alguna librería o algoritmo para esto?
Supongo que será algún tipo de hash o algo...

PD: La web está en JSP, por tanto, tendría que se una librería Java.
hombre, si no te importa que sean mas largos, siempre puedes hacer el md5 o el sha1 del nombre, URL, o lo que sea, al que identifica.

Segun lo que sea, y como terminen dichos "nombres", puedes pasarlo a base64 y coger X caracteres finales.
Los Ids únicos no existen :P

Si quieres generar algo similar a los ids de youtube mete en un array los números y letras que quieras que aparezcan en el id, genera un número "aleatorio" entre 0 y maxlenght-1 del vector, recupera el caracter y mete eso en un bucle del número de caracteres que quieras que sea el id. Si quieres no repetir guardalo en BBDD y el siguiente que generes compruebalo.

Obviamente es un método chapuza

También puedes mirarte esto: http://kevin.vanzonneveld.net/techblog/ ... r_tinyurl/

Eso si yo no te lo paso a JAVA que no me apetece abrir el eclipse ahora XD, aunque si lo buscas está hecho

También puedes mirarte la API de youtube, quizás tengas una función para hacerlo :P

https://developers.google.com/youtube/?hl=es-ES
Java tiene una librería muy maja para crear UUID's, quizá pueda serte de utilidad.
Yo para usar ids suelo utilizar los segundos UNIX... mucha casualidad sería que hubieran dos altas en el mismísimo segundo!!

Si luego los pasas a md5 como ya te decían arriba, tienes un churro de números y letras... aunque al estilo youtueb^10 :P
Por ahora el enlace de Daniel es la mejor alternativa.

El sistema de segundos o hash no me vale porque quedarían muy grandes, aún así, muchas gracias a todos.
Yo me hice una funcion que te generaba precisamente esto que pides a la que le pasaba el numero de longitud con la que queria (el mismo que luego usaba, aka XLONG. La usaba para generar passwords. Sacaba la semilla de un texto hiperlargo de Lorem Impsum, a ese texto, pillaba XLONG letras aleatoriamente a las que les hacia un MD5 y guardaba en una string concatenandolas.

A la string generada, volvia a pillar aleatoriamente XLONG caracteres y las guardaba concatenandolas en string2, luego devolvia string2.

En tu caso, solo deberias añadirle la comprobacion de si ese codigo ya existe en la base de datos, si no existe, lo asocias. Si existe, vuelves a pedirle a la funcion otro id.

No se tarda mas de 10-20 min en hacer la funcion. Ahora no la tengo aquí a mano, porque no estoy en casa, pero si llego y aun no lo has solucionado te la pongo aquí. Supongo que es en PHP lo que pides, si no, pues simplemente deberas cambiar lo que sea necesario pra que funcione en tu lenguaje y ya esta.
o definir un array/lista con letras y numeros y que vaya sacando aleatoriamente hasta llegar al limite de la palabra. Poniendo una condicion para que no sea igual que alguna anterior
Como dije

    function genRandStr($size) {
            $semilla = "Sed porttitor, diam et dignissim suscipit ultricies nisl tempus... (todo lo largo que quieras)";
            $string = "";         
            for ($i = 0; $i<$size; $i++) {
                    $rndnum = rand(0, strlen($semilla) );
                    $string .= md5($semilla[$rndnum]);      
            }
            $resultado = "";
            for ($i = 0; $i<$size; $i++ ) {
                    $rndnum = rand(0, strlen($string));
                    $resultado .= $string[$rndnum];
            }
            return $resultado;
    }
id + primera letra del user y a md5 xD
9 respuestas