title: Android : How to create HMAC MD5 string?
body: <p>I am trying to create an android MD5 hash string to equal the C# code bellow:</p>
  
  <pre><code>private string CalculateHMACMd5(string message, string key)
  {
       System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
       byte[] keyByte = encoding.GetBytes(key);
       HMACMD5 hmacmd5 = new HMACMD5(keyByte);
       byte[] messageBytes = encoding.GetBytes(message);
       byte[] hashmessage = hmacmd5.ComputeHash(messageBytes);
       string HMACMd5Value = ByteToString(hashmessage);
       return HMACMd5Value;
  }
  
  private static string ByteToString(byte[] buff)
  {
      string sbinary = "";
      for (int i = 0; i &lt; buff.Length; i++)
      {
          sbinary += buff[i].ToString("X2"); 
      }
      return (sbinary);
  }
  </code></pre>
  
  <p><hr>
  Android code that I currently use [<strong><em>not generating the same C# code</em></strong>]:</p>
  
  <pre><code>        public static String sStringToHMACMD5(String sData, String sKey) 
          {
              SecretKeySpec key;
              byte[] bytes;
              String sEncodedString = null;
              try 
              {       
                  key = new SecretKeySpec((sKey).getBytes(), "ASCII");
                  Mac mac = Mac.getInstance("HMACMD5");
                  mac.init(key);
                  mac.update(sData.getBytes());
  
                  bytes = mac.doFinal(sData.getBytes());
                  StringBuffer hash = new StringBuffer();
  
                  for (int i=0; i&lt;bytes.length; i++) {
                      String hex = Integer.toHexString(0xFF &amp;  bytes[i]);
                      if (hex.length() == 1) {
                          hash.append('0');
                      }
                      hash.append(hex);
                  }
              sEncodedString = hash.      
              return sEncodedString;
          }
  </code></pre>
  
  <p>Thanks in advance.</p>