/* * SecurityMessageDigester.java * * */ package org.smartly.commons.cryptograph; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * */ public final class SecurityMessageDigester implements ICryptographConstants { private AlgorithmMessageDigest _algorithm = AlgorithmMessageDigest.MD5; private MessageDigest _md = null; /** * Creates a new instance of SecurityMessageDigester */ public SecurityMessageDigester() throws NoSuchAlgorithmException { this(AlgorithmMessageDigest.MD5); } public SecurityMessageDigester(final AlgorithmMessageDigest algorithm) throws NoSuchAlgorithmException { setAlgorithm(algorithm); } public AlgorithmMessageDigest getAlgorithm() { return _algorithm; } public void setAlgorithm(AlgorithmMessageDigest algorithm) throws NoSuchAlgorithmException { this._algorithm = algorithm; // try algorithm validity _md = null; _md = MessageDigest.getInstance(_algorithm.toString()); } public String getEncodedText(String clearText) { if (null == _md) { return clearText; } // Reset the digester for further use. _md.reset(); _md.update(clearText.getBytes()); return HexString.bufferToHex(_md.digest()); } public boolean testPassword(String clearTextTestPassword, String encodedActualPassword) { String encodedTestPassword = this.getEncodedText( clearTextTestPassword); return (encodedTestPassword.equals(encodedActualPassword)); } // ------------------------------------------------------------------------ // S T A T I C // ------------------------------------------------------------------------ private static SecurityMessageDigester _instance; public static SecurityMessageDigester getInstance() throws NoSuchAlgorithmException { if (null == _instance) { _instance = new SecurityMessageDigester(AlgorithmMessageDigest.MD5); } return _instance; } public static String encodeMD5(final String text, final String opvalue) { try { final SecurityMessageDigester instance = getInstance(); return instance.getEncodedText(text); } catch (Throwable t) { return opvalue; } } public static String encodeMD5(final String text) throws NoSuchAlgorithmException { SecurityMessageDigester instance = getInstance(); return instance.getEncodedText(text); } public static String encodeMD2(final String text) throws NoSuchAlgorithmException { SecurityMessageDigester instance = getInstance(); instance.setAlgorithm(AlgorithmMessageDigest.MD2); return instance.getEncodedText(text); } public static String encodeSHA(final String text) throws NoSuchAlgorithmException { SecurityMessageDigester instance = getInstance(); instance.setAlgorithm(AlgorithmMessageDigest.SHA); return instance.getEncodedText(text); } public static String encodeSHA_1(final String text) throws NoSuchAlgorithmException { SecurityMessageDigester instance = getInstance(); instance.setAlgorithm(AlgorithmMessageDigest.SHA_1); return instance.getEncodedText(text); } }