Java 创建 HMAC 签名,java创建hmac签名,HMAC是 Hash M
分享于 点击 47743 次 点评:144
Java 创建 HMAC 签名,java创建hmac签名,HMAC是 Hash M
HMAC是 Hash Message Authentication Code的简写,这种算法用来在程序之间交换数据时做校验。 通常任何hash函数像MD5,SHA1都可以用来创建HMAC签名,在这个代码中我们使用的hash算法是SHA256.
要创建HMAC,我们需要一个key和javax.crypto.Mac类。
ComputopTest.java
package cn.outofmemory.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); }}
用户点评