Generare One-time password in Java
Per chi non lo sapesse (fonte Wikipedia):
In crittografia, nell'ambito della robustezza della password, una one-time password (OTP, "password (valida) una sola volta") è una password che è valida solo per una singola sessione di accesso o una transazione.
Oggi vediamo come creare una OTP in Java usando la libreria java-otp.
Usando questa libreria, ci leviamo dal compito di utilizzare / creare gli algoritmi in modo corretto.
Se usate Maven aggiungete questa dipendenza:
<dependency>
<groupId>com.eatthepath</groupId>
<artifactId>java-otp</artifactId>
<version>0.1.0</version>
</dependency>
Detto ciò, ecco un codice di esempio:
import com.eatthepath.otp.TimeBasedOneTimePasswordGenerator;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Date;
public class Main {
public static void main(String[] args) {
try {
TimeBasedOneTimePasswordGenerator totp = new TimeBasedOneTimePasswordGenerator();
KeyGenerator keyGenerator = KeyGenerator.getInstance(totp.getAlgorithm());
keyGenerator.init(1024);
SecretKey secretKey = keyGenerator.generateKey();
Date adesso = new Date();
System.out.println("PWD: " + totp.generateOneTimePassword(secretKey, adesso));
} catch (NoSuchAlgorithmException | InvalidKeyException e) {
System.out.println(e.getMessage());
}
}
}
Come vedete è tutto molto semplice.
Ovviamente questo codice si limita a crearla; poi la gestione della OTP è tutt'altra faccenda.
Enjoy!
java otp java-otp secretkey keygenerator maven
Commentami!