2012-07-18 81 views
1

我尝试使用MD5生成HMAC,万物似乎是完美的,但它显示意外错误安卓HMAC显示意外的错误

的代码如下

public String calcHmac(String src) throws Exception { 

     String key = "PFhNTD48VUlEPlNYWUFOR0VUPC9VSUQ+PEVUUkFOQVVUSD48WFNQUk9MRT5BbGw8L1hTUFJPTEU+PFhTUFNlY3VyaXR5SUQ+MzMzPC9YU1BTZWN1cml0eUlEPjxYU1BTZWN1cml0eUlEPjk5NzwvWFNQU2VjdXJpdHlJRD48WFNQU2VjdXJpdHlJRD5HQjwvWFNQU2VjdXJpdHlJRD48WFNQU2VjdXJpdHlJRD5YMDM8L1hTUFNlY3VyaXR5SUQ+PFhTUFNlY3VyaXR5SUQ+WDAxPC9YU1BTZWN1cml0eUlEPjxYU1BSZWNpcGllbnQ+NDlBQ0NULVNZQU5HRVRSQU48L1hTUFJlY2lwaWVudD48L0VUUkFOQVVUSD48L1hNTD4="; 
     SecretKeySpec keySpec = new SecretKeySpec(
       key.getBytes(), 
       "HmacMD5"); 

     Mac mac = Mac.getInstance("HmacMD5"); 
     mac.init(keySpec); 
     byte[] result = mac.doFinal(src.getBytes()); 
     return Hex.encodeHexString(result); 
    } 
+0

这是什么错误? – SALMAN 2012-07-18 10:22:10

回答

1

试试这个

public static String sStringToHMACMD5(String s, String keyString) 
    { 
     String sEncodedString = null; 
     try 
     { 
      SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), "HmacMD5"); 
      Mac mac = Mac.getInstance("HmacMD5"); 
      mac.init(key); 

      byte[] bytes = mac.doFinal(s.getBytes("ASCII")); 

      StringBuffer hash = new StringBuffer(); 

      for (int i=0; i<bytes.length; i++) { 
       String hex = Integer.toHexString(0xFF & bytes[i]); 
       if (hex.length() == 1) { 
        hash.append('0'); 
       } 
       hash.append(hex); 
      } 
      sEncodedString = hash.toString(); 
     } 
     catch (UnsupportedEncodingException e) {} 
     catch(InvalidKeyException e){} 
     catch (NoSuchAlgorithmException e) {} 
     return sEncodedString ; 
    } 

这一定会帮助你。

谢谢

+0

工作......谢谢 – 2013-12-25 12:00:47