Generare OTP con Python

Mattepuffo's logo
Generare OTP con Python

Generare OTP con Python

OTP sta per One Time Password, ed è sempre più usato per migliorare la sicurezza online; sia per il login che per effettuare altre operazioni.

In genere questi OTP vengono iviati per SMS o per email.

Oggi vediamo come crearli usando Python e la libreria pyotp!

Ci limiteremo a crearli; poi c'è la parte di invio, salvataggio sul server, ecc che non vedremo.

Cominciamo con il codice per creare un OTP a tempo:

import time
import pyotp

secret_key = pyotp.random_base32()
otp = pyotp.TOTP(s=secret_key, interval=10)
otp_now = otp.now()
print(otp_now)
print(otp.verify(otp_now))
time.sleep(11)
print(otp_now)
print(otp.verify(otp_now))

Abbiamo impostato la durata a 10 secondi; quindi la seconda verifica non sarà valida.

Di default la validtà è di 30 secondi.

Poi abbiamo la possibilità di crearli counter based:

import pyotp

secret_key = pyotp.random_base32()
otp = pyotp.HOTP(s=secret_key)
otp0 = otp.at(0)

print(otp0)
print(otp.verify(otp0, 0))
print(otp.verify(otp0, 1))

Potete anche impostare che il counter non parta da zero; comunque la prima verifica andrà a buon fine, la seconda no.

Ovviamente qui dovremmo anche considerare di salvare il conteggio da qualche parte.

Tra i due trovo più pratico quello a tempo.

Enjoy!


Condividi

Commentami!