1

私は android.util.Base64 を使用して、HTTP 基本認証のユーザー名とパスワードを次のようにエンコードしています。

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

ユーザー名とパスワードに「user」と「pass」を使用した場合、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 に答える