password online ejemplo desencriptar dependency decrypt bcryptpasswordencoder java hash crypt bcrypt jbcrypt

online - hash password java



¿Qué usar para el hash de contraseñas? ¿Alguna razón para no usar jBCrypt? (3)

Estoy planeando usar jBCrypt para el hash de contraseñas en una nueva aplicación web, ya que se supone que es el mejor de lo que he leído. Como no lo he usado antes, estoy investigando si hay alguna razón para no usarlo.

Tengo esto:

  • No lo he encontrado en el repositorio de Maven (busqué jbcrypt y bcrypt en mvnrepository.org) lo cual es una decepción ya que me gustaría tener mis dependencias administradas usando un repositorio Maven si es posible. Si jBCrypt es la mejor solución para la creación de contraseñas, tendré que configurar mi propio repositorio local y tenerlo disponible de esa manera. ¿O simplemente me lo perdí? Tal vez está allí en alguna parte?
  • Está solo en la versión 0.2, pero tal vez sea estable de todos modos y la razón para un número bajo de versión tiene alguna otra causa.

Dudo que la estabilidad vaya a ser un problema, ya que la propia bcrrypt está madura y sus envoltorios pequeños y estandarizados no hacen nada extraordinario. Estoy contento con otra envoltura de brypt de Damien Miller, python-bcrypt , que solo está en la versión 0.1.

No estoy familiarizado con Maven, pero (¡alerta de herejía!). Dudo que necesites el control de versión para un componente tan simple como bcrypt. Para citar el sitio, los cambios de v0.1 a v0.2 fueron "correcciones, errores tipográficos y de API (completamente compatibles con versiones anteriores)", y la lista de TODO está vacía.


En cuanto a su preocupación de que no está maduro, le sugerí que configure sus propias pruebas JUnit comparando los resultados de jBcrypt y Bcrypt más probado, para ver si obtiene los mismos resultados, y luego contribuya con los de jBcrypt. proyecto.

Pero eso ya se ha hecho:

... se envía con un conjunto de pruebas de unidad JUnit para verificar el correcto funcionamiento de la biblioteca y la compatibilidad con la implementación canónica de C del algoritmo bcrypt.

Examinar las pruebas de JUnit para ver si cumplen con su nivel de satisfacción es dónde comenzaría ...


jBcrypt probablemente sea correcto como algoritmo de criptografía para sus contraseñas; pez globo es relativamente fuerte. Aunque se han reportado fallas de implementación en Blowfish, no encuentro mucho reportado sobre jBcrypt. Por otro lado, Blowfish no ha sido probado casi tan fuertemente como lo hacen otros algoritmos, y un ataque conocido como crack -plaintxt a menudo funciona mejor de lo esperado, lo que sorprende a los geeks de crypto.

Así que esto es lo que sugeriría:

  • siga adelante y use jBcrypt, pero proteja sus archivos de contraseñas encriptados en la medida que razonablemente pueda, como lo haría con / etc / shadow en un sistema UNIX.
  • Contrariamente a la sugerencia de Nikhil, pondría las fuentes en el control de tu versión, por dos razones: (1) ¿dónde más podrías guardarlas, ya que las necesitas cada vez que compilas, y (2) porque siempre existe la posibilidad de que la persona que hace jBcrypt pasará a otras cosas, y no querrá encontrarse colgado justo antes de una entrega (que inevitablemente será cuando lo descubra). En este tipo de situación, pondría las fuentes en su control de versiones como si fueran su código, y luego se pueden insertar cambios como si hubiera creado una nueva versión usted mismo. No es necesario que sea más complicado de lo que normalmente sería.