| package com.zt.core.security; | 
|   | 
| /** | 
|  * Service interface for encoding passwords. | 
|  * | 
|  * The preferred implementation is {@code BCryptPasswordEncoder}. | 
|  * | 
|  * @author Keith Donald | 
|  */ | 
| public interface PasswordEncoder { | 
|   | 
|     /** | 
|      * Encode the raw password. Generally, a good encoding algorithm applies a SHA-1 or | 
|      * greater hash combined with an 8-byte or greater randomly generated salt. | 
|      */ | 
|     String encode(CharSequence rawPassword); | 
|   | 
|     /** | 
|      * Verify the encoded password obtained from storage matches the submitted raw | 
|      * password after it too is encoded. Returns true if the passwords match, false if | 
|      * they do not. The stored password itself is never decoded. | 
|      * | 
|      * @param rawPassword the raw password to encode and match | 
|      * @param encodedPassword the encoded password from storage to compare with | 
|      * @return true if the raw password, after encoding, matches the encoded password from | 
|      * storage | 
|      */ | 
|     boolean matches(CharSequence rawPassword, String encodedPassword); | 
|   | 
| } |