/** * Calculates the hash of password (and salt bytes, if supplied) and returns a base64 * encoded concatenation of the hash and salt, prefixed with {SHA} (or {SSHA} if salt * was used). * * @param rawPass the password to be encoded. * * @return the encoded password in the specified format * */ public String encode(CharSequence rawPass) { byte[] salt = this.saltGenerator.generateKey(); return encode(rawPass, salt); }
/** * Calculates the hash of password (and salt bytes, if supplied) and returns a base64 * encoded concatenation of the hash and salt, prefixed with {SHA} (or {SSHA} if salt * was used). * * @param rawPass the password to be encoded. * * @return the encoded password in the specified format * */ public String encode(CharSequence rawPass) { byte[] salt = this.saltGenerator.generateKey(); return encode(rawPass, salt); }
private boolean matches(String rawPassword, String encodedPassword) { String prefix = extractPrefix(encodedPassword); if (prefix == null) { return PasswordEncoderUtils.equals(encodedPassword, rawPassword); } byte[] salt; if (prefix.equals(SSHA_PREFIX) || prefix.equals(SSHA_PREFIX_LC)) { salt = extractSalt(encodedPassword); } else if (!prefix.equals(SHA_PREFIX) && !prefix.equals(SHA_PREFIX_LC)) { throw new IllegalArgumentException("Unsupported password prefix '" + prefix + "'"); } else { // Standard SHA salt = null; } int startOfHash = prefix.length(); String encodedRawPass = encode(rawPassword, salt).substring(startOfHash); return PasswordEncoderUtils .equals(encodedRawPass, encodedPassword.substring(startOfHash)); }
private boolean matches(String rawPassword, String encodedPassword) { String prefix = extractPrefix(encodedPassword); if (prefix == null) { return PasswordEncoderUtils.equals(encodedPassword, rawPassword); } byte[] salt; if (prefix.equals(SSHA_PREFIX) || prefix.equals(SSHA_PREFIX_LC)) { salt = extractSalt(encodedPassword); } else if (!prefix.equals(SHA_PREFIX) && !prefix.equals(SHA_PREFIX_LC)) { throw new IllegalArgumentException("Unsupported password prefix '" + prefix + "'"); } else { // Standard SHA salt = null; } int startOfHash = prefix.length(); String encodedRawPass = encode(rawPassword, salt).substring(startOfHash); return PasswordEncoderUtils .equals(encodedRawPass, encodedPassword.substring(startOfHash)); }
@Test public void correctPrefixCaseIsUsed() { this.sha.setForceLowerCasePrefix(false); assertThat(this.sha.encode("somepassword").startsWith("{SSHA}")); this.sha.setForceLowerCasePrefix(true); assertThat(this.sha.encode("somepassword").startsWith("{ssha}")); this.sha = new LdapShaPasswordEncoder(KeyGenerators.shared(0)); this.sha.setForceLowerCasePrefix(false); assertThat(this.sha.encode("somepassword").startsWith("{SHA}")); this.sha.setForceLowerCasePrefix(true); assertThat(this.sha.encode("somepassword").startsWith("{SSHA}")); }
/** * Calculates the hash of password (and salt bytes, if supplied) and returns a base64 * encoded concatenation of the hash and salt, prefixed with {SHA} (or {SSHA} if salt * was used). * * @param rawPass the password to be encoded. * * @return the encoded password in the specified format * */ public String encode(CharSequence rawPass) { byte[] salt = this.saltGenerator.generateKey(); return encode(rawPass, salt); }
/** * Calculates the hash of password (and salt bytes, if supplied) and returns a base64 * encoded concatenation of the hash and salt, prefixed with {SHA} (or {SSHA} if salt * was used). * * @param rawPass the password to be encoded. * * @return the encoded password in the specified format * */ public String encode(CharSequence rawPass) { byte[] salt = this.saltGenerator.generateKey(); return encode(rawPass, salt); }
/** * Calculates the hash of password (and salt bytes, if supplied) and returns a base64 * encoded concatenation of the hash and salt, prefixed with {SHA} (or {SSHA} if salt * was used). * * @param rawPass the password to be encoded. * * @return the encoded password in the specified format * */ public String encode(CharSequence rawPass) { byte[] salt = this.saltGenerator.generateKey(); return encode(rawPass, salt); }
/** * Digest with SSHA the given clear password. * * @param password * the clear password to digest. * @return a SSHA digest. */ @SuppressWarnings("deprecation") private String digest(final String password) { return isClearPassword() ? password : new org.springframework.security.crypto.password.LdapShaPasswordEncoder().encode(password); }
private boolean matches(String rawPassword, String encodedPassword) { String prefix = extractPrefix(encodedPassword); if (prefix == null) { return PasswordEncoderUtils.equals(encodedPassword, rawPassword); } byte[] salt; if (prefix.equals(SSHA_PREFIX) || prefix.equals(SSHA_PREFIX_LC)) { salt = extractSalt(encodedPassword); } else if (!prefix.equals(SHA_PREFIX) && !prefix.equals(SHA_PREFIX_LC)) { throw new IllegalArgumentException("Unsupported password prefix '" + prefix + "'"); } else { // Standard SHA salt = null; } int startOfHash = prefix.length(); String encodedRawPass = encode(rawPassword, salt).substring(startOfHash); return PasswordEncoderUtils .equals(encodedRawPass, encodedPassword.substring(startOfHash)); }
private boolean matches(String rawPassword, String encodedPassword) { String prefix = extractPrefix(encodedPassword); if (prefix == null) { return PasswordEncoderUtils.equals(encodedPassword, rawPassword); } byte[] salt; if (prefix.equals(SSHA_PREFIX) || prefix.equals(SSHA_PREFIX_LC)) { salt = extractSalt(encodedPassword); } else if (!prefix.equals(SHA_PREFIX) && !prefix.equals(SHA_PREFIX_LC)) { throw new IllegalArgumentException("Unsupported password prefix '" + prefix + "'"); } else { // Standard SHA salt = null; } int startOfHash = prefix.length(); String encodedRawPass = encode(rawPassword, salt).substring(startOfHash); return PasswordEncoderUtils .equals(encodedRawPass, encodedPassword.substring(startOfHash)); }
private boolean matches(String rawPassword, String encodedPassword) { String prefix = extractPrefix(encodedPassword); if (prefix == null) { return PasswordEncoderUtils.equals(encodedPassword, rawPassword); } byte[] salt; if (prefix.equals(SSHA_PREFIX) || prefix.equals(SSHA_PREFIX_LC)) { salt = extractSalt(encodedPassword); } else if (!prefix.equals(SHA_PREFIX) && !prefix.equals(SHA_PREFIX_LC)) { throw new IllegalArgumentException("Unsupported password prefix '" + prefix + "'"); } else { // Standard SHA salt = null; } int startOfHash = prefix.length(); String encodedRawPass = encode(rawPassword, salt).substring(startOfHash); return PasswordEncoderUtils .equals(encodedRawPass, encodedPassword.substring(startOfHash)); }