#Snippets: Generador de strings aleatorios en Ruby


Últimamente me he topado con más de un caso en el que tengo que hacer un generador de claves aleatorias (strings que contengan números y letras random) con cierto número de caracteres. ¿Para qué nos serviría dicho generador?


  • Generar contraseñas volátiles aleatorias para el usuario
  • Generador de claves WEP/WPA para proteger Wi-Fi
  • Generar una "uniclave" para algún sistema de registro de productos

Y sin duda para más...

Bueno, este es el snippet que yo armé y uso en estos casos. Se trata de un pequeño método/función que lo que hace es formar 2 arrays, uno con las letras de la A a la Z y otro con los dígitos del 0 al 9 y nos devuelve una string que resulta ser la combinación aleatoria de las letras y números antes mencionados cada que corre, haciendo una nueva combinación de 8 caracteres cada vez:
 
def random_string

    a = ("a".."z")
    b = (0..9)
    c = a.to_a + b.to_a
    key = c.shuffle[0,8].join
  end

Cabe destacar que se pueden hacer combinaciones con todo tipo de caracteres y que nos devuelvan strings tan largos como necesitemos modificando tan solo un poquito el método.