El módulo de secretos se usa para generar números aleatorios para administrar datos importantes, como contraseñas, autenticación de cuentas, tokens de seguridad y secretos relacionados, que son criptográficamente fuertes. Este módulo es responsable de brindar acceso a la fuente más segura de aleatoriedad. Este módulo está presente en Python 3.6 y superior.
Números aleatorios: secretos de clase.SystemRandom
Esta clase utiliza la función os.urandom() para la generación de números aleatorios a partir de fuentes proporcionadas por el sistema operativo.
- secrets.choice(secuencia): esta función devuelve un elemento elegido al azar de una secuencia no vacía para administrar un nivel básico de seguridad.
Ejemplo 1: Genere una contraseña alfanumérica de diez caracteres.import
secrets
import
string
alphabet
=
string.ascii_letters
+
string.digits
password
=
''.join(secrets.choice(alphabet)
for
i
in
range
(
10
))
print
(password)
Producción :
'tmX47l1uo4'
Ejemplo 2: genere una contraseña alfanumérica de diez caracteres con al menos un carácter en minúscula, al menos un carácter en mayúscula y al menos tres dígitos.
import
secrets
import
string
alphabet
=
string.ascii_letters
+
string.digits
while
True
:
password
=
''.join(secrets.choice(alphabet)
for
i
in
range
(
10
))
if
(
any
(c.islower()
for
c
in
password)
and
any
(c.isupper()
for
c
in
password)
and
sum
(c.isdigit()
for
c
in
password) >
=
3
):
print
(password)
break
Producción :
Tx8LppU05Q
- secrets.randbelow(n) : esta función devuelve un número entero aleatorio en el rango [0, n).
import
secrets
passwd
=
secrets.randbelow(
20
)
print
(passwd)
Producción :
2
- secrets.randbits(k): esta función devuelve un int con k bits aleatorios.
import
secrets
passwd
=
secrets.randbits(
7
)
print
(passwd)
Producción :
61
Generando fichas
Este módulo proporciona varias funciones para generar tokens seguros para aplicaciones como restablecimiento de contraseña, URL difíciles de adivinar, etc.
- secrets.token_bytes([nbytes=None]) : esta función es responsable de generar una string de bytes aleatoria que contiene nbytes de bytes. Si no se proporciona ningún valor, se utiliza un valor predeterminado razonable.
import
secrets
token1
=
secrets.token_bytes()
token2
=
secrets.token_bytes(
10
)
print
(token1)
print
(token2)
Producción :
b"\x86?\x85\xcf\x8ek8ud\x8a\x92\x8b>R\xc7\x89_\xc4x\xce'u]\x95\x0c\x05*?HG8\xfb" b'Dx\xe8\x7f\xc05\xdf\xe0\xf6\xe1'
- secrets.token_hex([nbytes=None]) : Esta función se encarga de generar una string de texto aleatorio en hexadecimal que contiene nbytes bytes aleatorios. Si no se proporciona ningún valor, se utiliza un valor predeterminado razonable.
import
secrets
token1
=
secrets.token_hex(
16
)
token2
=
secrets.token_hex(
9
)
print
(token1)
print
(token2)
Producción :
5d894a501c88fbe735c6ff496a6d3e51 78baed9057e597dce4
- secrets.token_urlsafe([nbytes=None]) : esta función es responsable de generar una string de texto aleatoria segura para URL que contiene nbytes de bytes aleatorios. Esto es adecuado para aplicaciones de recuperación de contraseña.
Ejemplo: Genere una URL temporal difícil de adivinar que contenga un token de seguridad.Producción :
https://mydomain.com/reset=GbOiFIvhMoqWsfaTQKbj8ydbo8G1lsMx1ECa6SXjb1s
¿Cuántos bytes deben usar los tokens?
Se deben usar al menos 32 bytes para tokens para estar seguros contra un ataque de fuerza bruta.
Referencia: Documentación oficial de Python
Este artículo es una contribución de Aditi Gupta . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA