我正在编写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()
做些什么来使其与所有版本保持一致?
答案 0 :(得分: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