为什么android.util.Base64会返回不同的字符串?

Jak*_*ton 1 java base64 android

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

String encoded = Base64.encodeToString((username+":"+password).getBytes(), Base64.NO_WRAP);
Run Code Online (Sandbox Code Playgroud)

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

echo 'user:pass' | openssl base64
Run Code Online (Sandbox Code Playgroud)

但相反,我得到了这个:

返回字符串

任何想法为什么会这样?

谢谢,

可靠的人

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

Tools.ShowProgress(encoded, Login.this);
Run Code Online (Sandbox Code Playgroud)

Rei*_*ica 5

(username+":"+password).getBytes()
Run Code Online (Sandbox Code Playgroud)

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

(username+":"+password).getBytes("UTF-8")
Run Code Online (Sandbox Code Playgroud)

如果那不是问题,另外要检查的是你的输入是否符合你的想法:

String input = username+":"+password;
log.warn("Input was: " + input);
// calculate base64
Run Code Online (Sandbox Code Playgroud)