2012-09-27 84 views
1

我使用android.util.Base64编码HTTP基本验证的用户名+密码,就像这样:为什么android.util.Base64返回一个不同的字符串?

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

如果我使用“用户” &“通”为用户名和密码,我会期望得到dXNlcjpwYXNzCg ==(从OpenSSL的)

echo 'user:pass' | openssl base64 

,而是我得到这个:

returned string

任何想法,为什么这是?

感谢,

杰克

注:简单地将得到的字符串传递到显示进度对话框:

Tools.ShowProgress(encoded, Login.this); 
+0

请记住'echo'会在行尾打印一个'\ n'字符。用'-n'选项避免这种情况:'echo -n“user:pass”| openssl base64' – nkr

回答

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 
+1

谢谢!原来我错过了我的一个输入getText()而不是username.getText()。toString()我有username.toString() –

相关问题