0

私はAES code暗号化用に書いていますが、異なるバージョンの Android を別の方法で認識しましたencryptgetBytes()私はいつかGoogleに行って、システムの文字セットの影響を受けることについて何かを読んだので、encrypted文字列は異なります。

から情報を記録しますLog.i("Charset",Charset.defaultCharset().toString());

Android 2.3では次のように表示されます。

06-26 16:10:33.954: I/Charset(453): Charset[UTF-8]

Android 2.2には次のように書かれています。

06-26 16:05:19.140: I/Charset(737): com.ibm.icu4jni.charset.CharsetICU[UTF-8]

Android 4.xは次のように述べています。

06-26 15:53:17.770: I/Charset(16957): java.nio.charset.CharsetICU[UTF-8]

Android 2.3 と 4.x は文字列を暗号化/復号化して同じ結果になりますが、2.2 は異なります。

getBytes()すべてのバージョンで一貫性を持たせるにはどうすればよいですか?

4

1 に答える 1

0

にエンコーディングを渡すことができますgetBytes()。例:

String myString = "test";
byte[] bytes = myString.getBytes("UTF-8");

サポートされている値のリストについては、http: //developer.android.com/reference/java/nio/charset/Charset.htmlを参照してください。

編集
なるほど。しかし、Android のバージョンが異なると暗号化が異なる理由がわかりません。異なるライブラリを使用していても、標準は同じはずです...奇妙な。独自の実装を試みるとgetBytes()、すべてのバージョンでまったく同じように動作する可能性があります。この例を見つけました: http://www.javacodegeeks.com/2010/11/java-best-practices-char-to-byte-and.html

于 2012-06-26T16:56:27.107 に答える