package com.javaonly.hmac.test; import java.io.IOException; import java.security.InvalidKeyException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import javax.crypto.BadPaddingException; import javax.crypto.Cipher; import javax.crypto.IllegalBlockSizeException; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Hex; import javax.crypto.Mac; public class ComputopTest { public static void main(String args[]) throws NoSuchAlgorithmException, KeyManagementException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { String macKey = "The HMAC key"; String macData ="the data string" System.out.println("MACDATA:"+macData); Mac mac = Mac.getInstance("HmacSHA256"); //get the bytes of the hmac key and data string byte[] secretByte = macKey.getBytes("UTF-8"); byte[] dataBytes = macData.getBytes("UTF-8"); SecretKey secret = new SecretKeySpec(secretByte, "HMACSHA256"); mac.init(secret); byte[] doFinal = mac.doFinal(dataBytes); byte[] hexB = new Hex().encode(doFinal); String checksum = new String(hexB); } } //该片段来自于http://yuncode.net