EncodingUtils#getString(byte[], String) is for byte array to String
conversions, given a *character set* - not a *transfer encoding* (such
as Base64).

You want to use android.util.Base64 (available since 2.2).

On 6 Juni, 13:13, Mark Murphy <mmur...@commonsware.com> wrote:
> You are not generating Base64 output from the Android code, as is
> blindingly obvious by looking at your output and seeing that it is not
> Base64-encoded. I have no idea if EncodingUtils is supposed to support
> Base64 -- that's not documented.
>
> On Fri, Jun 3, 2011 at 3:10 PM, aa...@radich.com
>
>
>
>
>
>
>
>
>
> <kiley_rad...@hotmail.com> wrote:
> > I'm using the following Android code to generate a HmacMD5 hash.  When
> > I generate the hash from the Android App I get the following:
> > J0t j#߸ bq- .  When I generate the hash from a .net console
> > application I get: SjB0j+xqI9+4hxticS0Cjw==.  Notice the difference
> > and that the Android has has special chars in it.  Is this a character
> > set issue?
>
> > Aaron
>
> > ==============================================================
> > Here's the Android code:
>
> > public class HMACMD5 {
>
> >   private final String HMAC_MD5_NAME = "HmacMD5";
>
> >   private SecretKeySpec sk;
> >   private Mac mac;
>
> >   public HMACMD5(byte[] key) throws GeneralSecurityException {
> >      init(key);
> >   }
>
> >   public HMACMD5(String key) throws GeneralSecurityException {
> >      init(EncodingUtils.getAsciiBytes(key));
> >   }
>
> >   private void init(byte[] key) throws GeneralSecurityException {
> >      sk = new SecretKeySpec(key, HMAC_MD5_NAME);
> >      mac = Mac.getInstance(HMAC_MD5_NAME);
> >      mac.init(sk);
> >   }
>
> >   public byte[] ComputeHash(byte[] data) {
> >      return mac.doFinal(data);
> >   }
>
> >   public byte[] ComputeHash(String data) {
> >      return ComputeHash(EncodingUtils.getAsciiBytes(data));
> >   }
> > }
>
> > public String encodeText(String sKey, String sSrc) throws Exception {
> >      HMACMD5 hmacMD5 = new HMACMD5(sKey);
> >      byte[] textBytes = EncodingUtils.getBytes(sSrc, "UTF-8");
> >      byte[] encodedTextBytes = hmacMD5.ComputeHash(textBytes);
> >      String sEncodedText = EncodingUtils.getString(encodedTextBytes,
> > "BASE64");
> >      return sEncodedText;
> > }
>
> > ==============================================================
> > Here's the .NET code:
>
> > public static string EncodeText(byte[] key, string sText, Encoding
> > encoding)
> > {
> >   HMACMD5 hmacMD5 = new HMACMD5(key);
> >   byte[] textBytes = encoding.GetBytes(sText);
> >   byte[] encodedTextBytes = hmacMD5.ComputeHash(textBytes);
> >   string sEncodedText = Convert.ToBase64String(encodedTextBytes);
> >   return sEncodedText;
> > }
>
> > --
> > You received this message because you are subscribed to the Google
> > Groups "Android Developers" group.
> > To post to this group, send email to android-developers@googlegroups.com
> > To unsubscribe from this group, send email to
> > android-developers+unsubscr...@googlegroups.com
> > For more options, visit this group at
> >http://groups.google.com/group/android-developers?hl=en
>
> --
> Mark Murphy (a Commons 
> Guy)http://commonsware.com|http://github.com/commonsguyhttp://commonsware.com/blog|http://twitter.com/commonsguy
>
> _The Busy Coder's Guide to *Advanced* Android Development_ Version
> 1.9.3 Available!

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to