anchor.diff:  System.out.println(user.getPassword());
   // {bcrypt}$2a$10$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG
   ----
  +
  +.Kotlin
  +[source,kotlin,role="secondary",attrs="-attributes"]
  +----
  +val user = User.withDefaultPasswordEncoder()
  +    .username("user")
  +    .password("password")
  +    .roles("user")
  +    .build()
  +println(user.password)
  +// {bcrypt}$2a$10$dXJ3SW6G7P50lGmMkkmwe.20cQQubK3.HZWzG3YB1tlRy.fqvM/BG
  +----
   ====
   
   If you are creating multiple users, you can also reuse the builder.
   
   .withDefaultPasswordEncoder Reusing the Builder
   ====
  -[source,java]
  +.Java
  +[source,java,role="primary"]
   ----
   UserBuilder users = User.withDefaultPasswordEncoder();
   User user = users
  
positive.code: In order to defeat password cracking on custom hardware scrypt is a deliberately slow algorithm that requires large amounts of memory.
  Like other adaptive one-way functions, it should be tuned to take about 1 second to verify a password on your system.
  
  [source,java]
  ----
  // Create an encoder with all the defaults
  SCryptPasswordEncoder encoder = new SCryptPasswordEncoder();
  String result = encoder.encode("myPassword");
  assertTrue(encoder.matches("myPassword", result));
  ----
  
  [[authentication-password-storage-other]]
  == Other PasswordEncoders
  
negative.code: In order to make it more resistent to password cracking, bcrypt is deliberately slow.
  Like other adaptive one-way functions, it should be tuned to take about 1 second to verify a password on your system.
  
  .BCryptPasswordEncoder
  ====
  .Java
  [source,java,role="primary"]
  ----
  // Create an encoder with strength 16
  BCryptPasswordEncoder encoder = new BCryptPasswordEncoder(16);
  String result = encoder.encode("myPassword");
  assertTrue(encoder.matches("myPassword", result));
  ----
  
  .Kotlin
  [source,kotlin,role="secondary"]
  ----
  // Create an encoder with strength 16
  val encoder = BCryptPasswordEncoder(16)
  val result: String = encoder.encode("myPassword")
  assertTrue(encoder.matches("myPassword", result))
  ----
  ====
  
  [[authentication-password-storage-argon2]]
  == Argon2PasswordEncoder
  