Generare One-time password in Java

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!




Share

Commentami!

About Mattepuffo.com

Blog dedicato all'informatica e alla programmazione!
Tutti i contenuti di questo blog, tranne casi particolari, sono sotto licenza Licenza Creative Commons Creative Commons Attribution-Noncommercial-Share Alike 2.5. .

2612 articoli
310 commenti
19 progetti
Altri link
  • About
  • Scrivimi
  • Copyright
  • Sitemap
  • matteo.ferrone@yahoo.it
  • GitHub
  • Privacy Policy