Input byte array has incorrect ending byte at 40

后端 未结 3 1354
攒了一身酷
攒了一身酷 2021-02-19 00:32

I have a string that is base64 encoded. It looks like this:

eyJibGExIjoiYmxhMSIsImJsYTIiOiJibGEyIn0=

Any online tool can decode this to the pro

相关标签:
3条回答
  • 2021-02-19 00:34

    Okay, I found out. The original String is encoded on an Android device using android.util.Base64 by Base64.encodeToString(json.getBytes("UTF-8"), Base64.DEFAULT);. It uses android.util.Base64.DEFAULT encoding scheme.

    Then on the server side when using java.util.Base64 this has to be decoded with Base64.getMimeDecoder().decode(payload) not with Base64.getDecoder().decode(payload)

    0 讨论(0)
  • 2021-02-19 00:39

    Maybe too late, but I also had this problem.

    By default, the Android Base64 util adds a newline character to the end of the encoded string.
    The Base64.NO_WRAP flag tells the util to create the encoded string without the newline character.

    Your android app should encode src something like this:

    String encode = Base64.encodeToString(src.getBytes(), Base64.NO_WRAP);
    
    0 讨论(0)
  • 2021-02-19 00:45

    I was trying to use the strings from the args. I found that if I use arg[0].trim() that it made it work. eg

    Base64.getDecoder().decode(arg[0].trim());
    

    I guess there's some sort of whitespace that gets it messed up.

    0 讨论(0)
提交回复
热议问题