| 
					
				 | 
			
			
				@@ -93,8 +93,12 @@ String idForEncode = "bcrypt"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 Map encoders = new HashMap<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 encoders.put(idForEncode, new BCryptPasswordEncoder()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 encoders.put("noop", NoOpPasswordEncoder.getInstance()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-encoders.put("pbkdf2", new Pbkdf2PasswordEncoder()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-encoders.put("scrypt", new SCryptPasswordEncoder()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encoders.put("pbkdf2", Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_5()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encoders.put("pbkdf2@SpringSecurity_v5_8", Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encoders.put("scrypt", SCryptPasswordEncoder.defaultsForSpringSecurity_v4_1()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encoders.put("scrypt@SpringSecurity_v5_8", SCryptPasswordEncoder.defaultsForSpringSecurity_v5_8()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encoders.put("argon2", Argon2PasswordEncoder.defaultsForSpringSecurity_v5_2()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encoders.put("argon2@SpringSecurity_v5_8", Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 encoders.put("sha256", new StandardPasswordEncoder()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 PasswordEncoder passwordEncoder = 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -108,8 +112,12 @@ val idForEncode = "bcrypt" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 val encoders: MutableMap<String, PasswordEncoder> = mutableMapOf() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 encoders[idForEncode] = BCryptPasswordEncoder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 encoders["noop"] = NoOpPasswordEncoder.getInstance() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-encoders["pbkdf2"] = Pbkdf2PasswordEncoder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-encoders["scrypt"] = SCryptPasswordEncoder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encoders["pbkdf2"] = Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_5() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encoders["pbkdf2@SpringSecurity_v5_8"] = Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encoders["scrypt"] = SCryptPasswordEncoder.defaultsForSpringSecurity_v4_1() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encoders["scrypt@SpringSecurity_v5_8"] = SCryptPasswordEncoder.defaultsForSpringSecurity_v5_8() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encoders["argon2"] = Argon2PasswordEncoder.defaultsForSpringSecurity_v5_2() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+encoders["argon2@SpringSecurity_v5_8"] = Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 encoders["sha256"] = StandardPasswordEncoder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 val passwordEncoder: PasswordEncoder = DelegatingPasswordEncoder(idForEncode, encoders) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -363,7 +371,7 @@ The current implementation of the `Argon2PasswordEncoder` requires BouncyCastle. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Create an encoder with all the defaults 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Argon2PasswordEncoder encoder = new Argon2PasswordEncoder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Argon2PasswordEncoder encoder = Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 String result = encoder.encode("myPassword"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 assertTrue(encoder.matches("myPassword", result)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -372,7 +380,7 @@ assertTrue(encoder.matches("myPassword", result)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Create an encoder with all the defaults 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-val encoder = Argon2PasswordEncoder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+val encoder = Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 val result: String = encoder.encode("myPassword") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 assertTrue(encoder.matches("myPassword", result)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -392,7 +400,7 @@ This algorithm is a good choice when FIPS certification is required. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Create an encoder with all the defaults 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-Pbkdf2PasswordEncoder encoder = new Pbkdf2PasswordEncoder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Pbkdf2PasswordEncoder encoder = Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 String result = encoder.encode("myPassword"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 assertTrue(encoder.matches("myPassword", result)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -401,7 +409,7 @@ assertTrue(encoder.matches("myPassword", result)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Create an encoder with all the defaults 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-val encoder = Pbkdf2PasswordEncoder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+val encoder = Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 val result: String = encoder.encode("myPassword") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 assertTrue(encoder.matches("myPassword", result)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -420,7 +428,7 @@ Like other adaptive one-way functions, it should be tuned to take about 1 second 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,java,role="primary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Create an encoder with all the defaults 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-SCryptPasswordEncoder encoder = new SCryptPasswordEncoder(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+SCryptPasswordEncoder encoder = SCryptPasswordEncoder.defaultsForSpringSecurity_v5_8(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 String result = encoder.encode("myPassword"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 assertTrue(encoder.matches("myPassword", result)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -429,7 +437,7 @@ assertTrue(encoder.matches("myPassword", result)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 [source,kotlin,role="secondary"] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 // Create an encoder with all the defaults 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-val encoder = SCryptPasswordEncoder() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+val encoder = SCryptPasswordEncoder.defaultsForSpringSecurity_v5_8() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 val result: String = encoder.encode("myPassword") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 assertTrue(encoder.matches("myPassword", result)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ---- 
			 |