package won.cryptography.ssl; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; /** * User: ypanchenko * Date: 19.10.2015 */ public class AliasFromFingerprintGenerator implements AliasGenerator { public AliasFromFingerprintGenerator() { } @Override public String generateAlias(final X509Certificate certificate) throws CertificateException { String fingerprint = null; try { fingerprint = digest(certificate.getPublicKey().getEncoded()); } catch (Exception e) { new CertificateException("Alias generation from certificate fingerprint failed", e); } return fingerprint; } public String digest(final byte[] data) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("SHA3-224"); byte[] hash = md.digest(data); StringBuffer hexString = new StringBuffer(); for (int i = 0; i < hash.length; i++) { String hex = Integer.toHexString(0xff & hash[i]); if(hex.length() == 1) hexString.append('0'); hexString.append(hex); } return hexString.toString(); } public static void main (String... args) throws Exception{ System.out.println("digest:" + new AliasFromFingerprintGenerator().digest("digest".getBytes())); } }