【问题标题】:Base64 encoding and decoding using different libraries使用不同库的 Base64 编码和解码
【发布时间】:2014-01-17 11:58:55
【问题描述】:

我正在使用内置 Base64 类从 Android 客户端发送一些数据:

String auth = android.util.Base64.encodeToString ("someusername:somepassword".getBytes ("UTF-8"), android.util.Base64.NO_WRAP);

这将创建一个编码字符串:c29tZXVzZXJuYW1lOnNvbWVwYXNzd29yZA==

但是当我尝试在服务器上解码时,使用不同的库:

String auth = com.sun.org.apache.xml.internal.security.utils.Base64.decode (header).toString ();

我得到:[B@5c92ac1c

谁能告诉我我在这里做错了什么?我无法将 Android 的 util 导入我的服务器代码。

如果我遗漏了一些非常琐碎的事情,请道歉......

【问题讨论】:

  • 编码后的字符串确实与“someusername:somepassword”匹配,因此您在 apache Base64 中一定缺少某些内容(如何向其传递参数,或如何处理返回值)。它确实在包中说明了内部安全性,所以也许它不完全是您希望的那样?另外,考虑一下:stackoverflow.com/questions/7111577/…
  • 确定header 包含Base64 数据?
  • @ThomasW。或者那个.. :)
  • 是的,我肯定会在我的服务器上收到相同的编码字符串。事实上,更奇怪的是我也没有使用 android.util.Base64.decode() 获得实际值。

标签: java android encoding base64 decoding


【解决方案1】:

正如我所担心的那样,这是非常基本的东西。我没有在接收端明确定义我正在解码 UTF-8 数据。这是我为解决它所做的:

String auth = new String(header, "UTF-8");

【讨论】:

    猜你喜欢
    • 2015-07-14
    • 1970-01-01
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    相关资源
    最近更新 更多