Algoritmo para contraseñas pronunciables

Siguiendo el post anterior contraseñas pronunciables voy a explicar brevemente los pasos que seguí para crearlas, los archivos fuente los subiré luego pues aún tengo que comentarlos y quitarles todas las pruebas.

  1. Obtener el contenido del archivo fuente (en mi caso con 257 palabras)
  2. Limpiar este archivo quitando caracteres especiales, acentos y poniéndolo en minúsculas.
  3. Separar todas las palabras
  4. Para cada palabra mayor de 3 caracteres (por decisión propia) obtengo las dos primeras letras y las guardo en un array.
  5. Recorro letra a letra hasta el final – 1 los caracteres de la palabra y guardo en un array en el índice las letras 1 y 2 concatenadas y luego de valor la letra 3, y en otro array la letra 1 de índice y la letra 2 de valor.

Nota: guardo la letra 1 en un array y la siguiente como valor y lo mismo pero con las 2 primeras letras porque mi algoritmo no se basa en la letra anterior se basa en las 2 letras anteriores en caso de que exista, sino entonces busco la letra anterior por eso necesito ambos array (no necesario el segundo si la longitud de la clave es par).

  1. Una vez rellenados los arrays de probabilidades y de caracteres de inicio procedo a crear la clave.
  2. Busco aleatoriamente entre las posibles combinaciones de inicio y luego hago un ciclo basándome en ellas para calcular la letra siguiente dependiendo de las 2 anteriores si existe o de la anterior.
  3. La generación de una clave de 10 caracteres lleva una media de 0,013852 segundos (media obtenida de la generación de 10 mil claves).

Y listo con esto ya tenemos una clave de 10 caracteres segura, aleatoria y con una probabilidad de 1 entre 8311 de que sea una palabra real.

Comentarios