Estoy escribiendo un script de Python para generar contraseñas personalizadas basadas en un HMAC. Quiero que las contraseñas sean compatibles con los requisitos de varios sitios web, así que quiero asignar la salida HMAC (por ejemplo, formato hexadecimal) a una matriz de caracteres permitidos.
Digamos que quiero asignar 'fea503e5' solo a números.
El problema es hacerlo de forma segura, como usar módulo:
# numbers = "0123456789"
# pwd = ""
# ascii_digest is [65, 66, 67] for string "abc"
for i in ascii_digest:
pwd = pwd + numbers[i % len(chars)]
no es seguro porque algunas letras tienen más posibilidades de ser seleccionadas (múltiplos de 10).
¿El programa tr hará esto de forma segura? Además, ¿cómo funciona o más aún, cómo se debe implementar una función de mapeo segura?