import javax.crypto.KeyGenerator ; import javax.crypto.Mac ; import javax.crypto.SecretKey ; import javax.crypto.spec.SecretKeySpec ; import java.security.NoSuchAlgorithmException ; import java.security.InvalidKeyException ; import org.apache.commons.codec.binary.Base64 ; public class TestHMAC { SecretKey key ; Mac mac ; public String getKey () { byte[] bin = key.getEncoded () ; byte[] ascii = Base64.encodeBase64 (bin) ; return new String (ascii) ; } public TestHMAC (String alg) throws NoSuchAlgorithmException, InvalidKeyException { KeyGenerator gen = KeyGenerator.getInstance (alg) ; key = gen.generateKey () ; mac = Mac.getInstance (key.getAlgorithm ()) ; mac.init (key) ; } public TestHMAC (String alg, String k) throws NoSuchAlgorithmException, InvalidKeyException { byte [] ascii = k.getBytes () ; byte [] c = Base64.decodeBase64 (k) ; key = new SecretKeySpec (c, alg) ; mac = Mac.getInstance (key.getAlgorithm ()) ; mac.init (key) ; } public byte[] hash (Object o) { byte[] c = o.toString ().getBytes () ; return mac.doFinal (c) ; } public String hashToAscii (Object o) { byte [] hash = hash (o) ; byte [] ascii = Base64.encodeBase64 (hash) ; return new String (ascii) ; } }
Tuesday, January 15, 2013
计算 HMAC
如何使用 Java 计算数字签名。
Labels:
apache commons,
数字签名
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment