com.mohiva.play.silhouette.password
BCryptSha256PasswordHasher
Companion object BCryptSha256PasswordHasher
class BCryptSha256PasswordHasher extends BCryptPasswordHasher
Implementation of the password hasher based on BCrypt.
The designers of bcrypt truncate all passwords at 72 characters which means that bcrypt(password_with_100_chars) ==
bcrypt(password_with_100_chars[:72]). The original BCryptPasswordHasher does not have any special handling and
thus is also subject to this hidden password length limit. BCryptSha256PasswordHasher fixes this by first hashing
the password using sha256. This prevents the password truncation and so should be preferred over the
BCryptPasswordHasher. The practical ramification of this truncation is pretty marginal as the average user does
not have a password greater than 72 characters in length and even being truncated at 72 the compute powered required
to brute force bcrypt in any useful amount of time is still astronomical. Nonetheless, we recommend you use
BCryptSha256PasswordHasher anyway on the principle of "better safe than sorry".
- See also
https://docs.djangoproject.com/en/1.10/topics/auth/passwords/#using-bcrypt-with-django
https://crypto.stackexchange.com/questions/24993/is-there-a-way-to-use-bcrypt-with-passwords-longer-than-72-bytes-securely
- Alphabetic
- By Inheritance
- BCryptSha256PasswordHasher
- BCryptPasswordHasher
- PasswordHasher
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hash(plainPassword: String): PasswordInfo
Hashes a password.
Hashes a password.
This implementation does not return the salt separately because it is embedded in the hashed password. Other implementations might need to return it so it gets saved in the backing store.
- plainPassword
The password to hash.
- returns
A PasswordInfo containing the hashed password.
- Definition Classes
- BCryptSha256PasswordHasher → BCryptPasswordHasher → PasswordHasher
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
id: String
Gets the ID of the hasher.
Gets the ID of the hasher.
- returns
The ID of the hasher.
- Definition Classes
- BCryptSha256PasswordHasher → BCryptPasswordHasher → PasswordHasher
-
def
isDeprecated(passwordInfo: PasswordInfo): Option[Boolean]
Indicates if a password info hashed with this hasher is deprecated.
Indicates if a password info hashed with this hasher is deprecated.
In case of the BCrypt password hasher, a password is deprecated if the log rounds have changed.
- passwordInfo
The password info to check the deprecation status for.
- returns
True if the given password info is deprecated, false otherwise. If a hasher isn't suitable for the given password, this method should return None.
- Definition Classes
- BCryptPasswordHasher → PasswordHasher
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
def
isSuitable(passwordInfo: PasswordInfo): Boolean
- Definition Classes
- PasswordHasher
-
def
matches(passwordInfo: PasswordInfo, suppliedPassword: String): Boolean
Checks if a password matches the hashed version.
Checks if a password matches the hashed version.
- passwordInfo
The password retrieved from the backing store.
- suppliedPassword
The password supplied by the user trying to log in.
- returns
True if the password matches, false otherwise.
- Definition Classes
- BCryptSha256PasswordHasher → BCryptPasswordHasher → PasswordHasher
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )