hmac-md5
Posted shenjiangwei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hmac-md5相关的知识,希望对你有一定的参考价值。
1 import java.io.UnsupportedEncodingException; 2 import java.security.MessageDigest; 3 import java.security.NoSuchAlgorithmException; 4 import java.util.Arrays; 5 public class SignatureUtil { 6 private static String encodingCharset = "UTF-8"; 7 public static String hmacSign(String aValue, String aKey) { 8 byte k_ipad[] = new byte[64]; 9 byte k_opad[] = new byte[64]; 10 byte keyb[]; 11 byte value[]; 12 try { 13 keyb = aKey.getBytes(encodingCharset); 14 value = aValue.getBytes(encodingCharset); 15 } catch (UnsupportedEncodingException e) { 16 keyb = aKey.getBytes(); 17 value = aValue.getBytes(); 18 } 19 Arrays.fill(k_ipad, keyb.length, 64, (byte) 54); 20 Arrays.fill(k_opad, keyb.length, 64, (byte) 92); 21 for (int i = 0; i < keyb.length; i++) { 22 k_ipad[i] = (byte) (keyb[i] ^ 0x36); 23 k_opad[i] = (byte) (keyb[i] ^ 0x5c); 24 } 25 MessageDigest md = null; 26 try { 27 md = MessageDigest.getInstance("MD5"); 28 } catch (NoSuchAlgorithmException e) { 29 return null; 30 } 31 md.update(k_ipad); 32 md.update(value); 33 byte dg[] = md.digest(); 34 md.reset(); 35 md.update(k_opad); 36 md.update(dg, 0, 16); 37 dg = md.digest(); 38 return toHex(dg); 39 } 40 public static String toHex(byte input[]) { 41 if (input == null) 42 return null; 43 StringBuffer output = new StringBuffer(input.length * 2); 44 for (int i = 0; i < input.length; i++) { 45 int current = input[i] & 0xff; 46 if (current < 16) 47 output.append("0"); 48 output.append(Integer.toString(current, 16)); 49 } 50 return output.toString(); 51 } 52 }
以上是关于hmac-md5的主要内容,如果未能解决你的问题,请参考以下文章