Compare JDK HmacMD5 and bouncy castle HmacMD5 - Java Security

Java examples for Security:HMAC

Description

Compare JDK HmacMD5 and bouncy castle HmacMD5

Demo Code

import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

import org.apache.commons.codec.binary.Hex;
import org.bouncycastle.crypto.digests.MD5Digest;
import org.bouncycastle.crypto.macs.HMac;
import org.bouncycastle.crypto.params.KeyParameter;

public class ImoocHmac {

    private static String src = "imooc security hmac";

    public static void main(String[] args) {
        jdkHmacMD5();/*from   ww  w .ja v a2s.  c  om*/
        bcHmacMD5();
    }

    @SuppressWarnings("unused")
    public static void jdkHmacMD5() {
        try {
            KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacMD5");
            SecretKey secretKey = keyGenerator.generateKey();
            // byte[] key = secretKey.getEncoded();
            byte[] key = Hex.decodeHex(new char[] { 'a', 'a', 'a', 'a',
                    'a', 'a', 'a', 'a', 'a', 'a' });

            SecretKey restoreSecretKey = new SecretKeySpec(key, "HmacMD5");
            Mac mac = Mac.getInstance(restoreSecretKey.getAlgorithm());
            mac.init(restoreSecretKey);
            byte[] hmacMD5Bytes = mac.doFinal(src.getBytes());
            System.out.println("jdk hmacMD5 : "
                    + Hex.encodeHexString(hmacMD5Bytes));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void bcHmacMD5() {
        HMac hmac = new HMac(new MD5Digest());
        hmac.init(new KeyParameter(org.bouncycastle.util.encoders.Hex
                .decode("aaaaaaaaaa")));
        hmac.update(src.getBytes(), 0, src.getBytes().length);

        byte[] hmacMD5Bytes = new byte[hmac.getMacSize()];
        hmac.doFinal(hmacMD5Bytes, 0);

        System.out.println("bc hmacMD5 : "
                + org.bouncycastle.util.encoders.Hex
                        .toHexString(hmacMD5Bytes));

    }

}

Related Tutorials