Domanda

Sto pianificando di utilizzare jBCrypt per l'hash della password in una nuova applicazione Web, come dovrebbe essere il migliore da quello che ho letto. Dato che non l'ho mai usato prima, sto esaminando se c'è qualche motivo per non usarlo.

Ho questo:

  • Non l'ho trovato nel repository Maven (cercato jbcrypt e bcrypt su mvnrepository.org) che è un aspetto negativo poiché mi piacerebbe avere le mie dipendenze gestite usando un repository Maven, se possibile. Se jBCrypt è la migliore soluzione per l'hash delle password, dovrei configurare il mio repository locale e renderlo disponibile in questo modo. O l'ho appena perso? Forse è lì da qualche parte?
  • È solo alla versione 0.2, ma forse è comunque stabile e il motivo per un numero di versione basso ha qualche altra causa?
È stato utile?

Soluzione

jBcrypt probabilmente va bene come algoritmo crittografico per le tue password; il pesce palla è relativamente forte. Sebbene siano stati segnalati alcuni difetti di implementazione nello stesso Blowfish, non trovo nulla di molto segnalato su jBcrypt. D'altra parte, Blowfish non è stato testato quasi quanto gli altri algoritmi e un crack l'attacco di tipo noto plaintxt spesso funziona meglio del previsto, sorprendenti criptici.

Quindi ecco cosa suggerirei:

  • vai avanti e usa jBcrypt ma proteggi i tuoi file di password crittografati nella misura ragionevolmente possibile - come faresti con / etc / shadow su un sistema UNIX.
  • Contrariamente al suggerimento di Nikhil, vorrei inserire i sorgenti nel controllo della tua versione, per due motivi: (1) dove altro li manterresti, dal momento che ne hai bisogno ogni volta che costruisci, e (2 ) perché c'è sempre la possibilità che la persona che sta eseguendo jBcrypt passerà ad altre cose e non vorrai ritrovarti a penzolare appena prima di una consegna (che è inevitabilmente quando lo scopriresti. ) In questo tipo di situazione, metterei le fonti nel controllo della tua versione come se fossero il tuo codice on, e quindi tutte le modifiche possono essere inserite come se tu stessi costruendo una nuova versione. Non c'è bisogno di essere più complicato di quanto si farebbe normalmente.

Altri suggerimenti

Per quanto riguarda la tua preoccupazione che non sia matura, ti suggerivo di impostare i tuoi test JUnit confrontando i risultati di jBcrypt e il più collaudato Bcrypt, per vedere se ottieni gli stessi risultati e quindi contribuire a quelli al progetto jBcrypt.

Ma è già stato fatto:

  

... viene spedito con un set di unità JUnit   test per verificare il corretto funzionamento di   la libreria e la compatibilità con   implementazione canonica C del   algoritmo bcrypt.

Esaminando i test di JUnit per vedere se soddisfano il tuo livello di soddisfazione è dove inizierei ...

Dubito che la stabilità sarà un problema, poiché bcrypt stesso è maturo e i suoi involucri piccoli e standardizzati non fanno nulla di straordinario. Sono contento dell'altro wrapper bcrypt di Damien Miller, python-bcrypt , che è solo sulla versione 0.1.

Non ho familiarità con Maven, ma (avviso di eresia!) dubito che tu abbia bisogno del controllo della versione per un componente semplice come bcrypt. Per citare il sito, le modifiche da v0.1 a v0.2 sono state "correttezza, errori di battitura e errori API (pienamente compatibile con le versioni precedenti)," e l'elenco TODO è vuoto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top