Uma senha de uso único (OTP) é uma sequência de números e/ou caracteres que é gerada e enviada a um usuário para ser usada em uma única tentativa de login ou transação.
OTP baseada em tempo (TOTP)
Este tipo de OTP é baseado no tempo, pois fornece uma janela de tempo dentro da qual o código da OTP será válido. Em geral, os intervalos têm de 30 segundos. Se o usuário não inserir o código de OTP dentro do intervalo especificado, ele deverá solicitar um novo.
Exemplo
Para gerar um código OTP é possível de várias formas, como nesse exemplo abaixo.
| Tipo | Segredo | Algoritmo |
|---|---|---|
| TOTP Base32 | HE2DKMZZGY====== | SHA256 |
Deve-se gerar códigos de 6 dígitos a cada 30 segundos.
uses
OTP;
var
LToken: UInt32;
begin
LToken := TOTPCalculator.New
.SetSecret('HE2DKMZZGY======')
.SetAlgorithm(TAlgorithm.SHA256)
.Calculate;
end.
Repositório: GitHub