package org.dicadeveloper.weplantaforest.encryption; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import org.apache.commons.codec.binary.Base64; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Component; @Component public class PasswordEncrypter implements PasswordEncoder{ protected final Log LOG = LogFactory.getLog(PasswordEncrypter.class.getName()); public static final String US_ASCII = "US-ASCII"; private MessageDigest _sha; public PasswordEncrypter() { try { _sha = MessageDigest.getInstance("SHA"); } catch (final NoSuchAlgorithmException e) { LOG.error("unable to get MesageDiggest Method SHA", e); } } public String encryptPassword(final String password) { if (password == null) { return null; } _sha.update(password.getBytes()); final byte[] pwhash = _sha.digest(); try { return new String(Base64.encodeBase64(pwhash), US_ASCII); } catch (final UnsupportedEncodingException e) { // That shouldn't ever happen - US_ASCII is the most basic builtin // encoding, it will never go away ... LOG.error("Unknown encoding " + US_ASCII, e); return null; } } @Override public String encode(CharSequence rawPassword) { return encryptPassword(rawPassword.toString()); } @Override public boolean matches(CharSequence rawPassword, String encodedPassword) { return encryptPassword(rawPassword.toString()).equals(encodedPassword); } }