1

我正在使用 android.util.Base64 对 HTTP 基本身份验证的用户名 + 密码进行编码,如下所示:

String encoded = Base64.encodeToString((username+":"+password).getBytes(), Base64.NO_WRAP);

如果我使用“用户”和“密码”作为用户名和密码,我希望得到 dXNlcjpwYXNzCg==(来自 openssl)

echo 'user:pass' | openssl base64

但相反,我得到了这个:

返回的字符串

任何想法为什么会这样?

谢谢,

杰克

注意:只需将结果字符串传递给显示进度对话框:

Tools.ShowProgress(encoded, Login.this);
4

1 回答 1

5
(username+":"+password).getBytes()

String.getBytes()返回当前平台编码中字符串的字节数。为确保与其他平台匹配,您可能希望将String.getBytes(Charset)与 UTF-8 一起使用:

(username+":"+password).getBytes("UTF-8")

如果这不是问题,那么要检查的另一件事是您的输入是否是您认为的:

String input = username+":"+password;
log.warn("Input was: " + input);
// calculate base64
于 2012-09-27T18:54:38.137 回答