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!
python otp pyotp totp htop
Commentami!