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); 
 | 
  
 | 
} 
 |