0

我正在编写一个AES code用于加密的内容,并且我以不同的方式实现了不同版本的 Android encrypt。我花了一些时间去谷歌阅读了一些关于getBytes()系统中字符集的内容,因此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 回答