Ocasionalmente necesito generar una contraseña mientras trabajo en la línea de comandos de Unix. Tengo el siguiente alias en mi zshrc:
alias randpass='openssl rand -base64 32 | tr -d /=+ | cut -c -30'
Estos comandos generan una cadena de 30 caracteres alfanuméricos haciendo lo siguiente:
- Use OpenSSL para generar 32 bytes de datos aleatorios.
- Base64-codifica el resultado.
- Eliminar todos los caracteres excepto las letras mayúsculas, minúsculas y dígitos.
- Truncar el resultado a 30 caracteres.
El único defecto que puedo ver es que pueden quedar menos de 30 caracteres después de eliminar las instancias de /
, =
y +
. Por supuesto, eso requeriría que estos tres símbolos formen más de un tercio de los caracteres codificados en base64, lo cual es increíblemente improbable.
¿La salida de "openssl rand" es lo suficientemente aleatoria como para usarla como base de contraseñas? ¿Hay algún tipo de sesgo introducido por la codificación en base64 de los bytes aleatorios? (Supongo que al eliminar /
, =
y +
introduce un sesgo, pero esto es bastante mínimo).