我有一个48字符的AES-192
加密密钥,我正在使用它来解密加密的数据库。String.getBytes(“UTF-32”)在JVM和Dalvik VM上返回不同的结果
但是,它告诉我密钥长度是无效的,所以我记录了getBytes()的结果。
当我执行:
final String string = "346a23652a46392b4d73257c67317e352e3372482177652c";
final byte[] utf32Bytes = string.getBytes("UTF-32");
System.out.println(utf32Bytes.length);
在我的Mac(Java虚拟机)使用BlueJ的,我得到192
作为输出。
然而,当我使用:
Log.d(C.TAG, "Key Length: " + String.valueOf("346a23652a46392b4d73257c67317e352e3372482177652c".getBytes("UTF-32").length));
我得到196
作为输出。
有没有人知道为什么会发生这种情况,以及Dalvik从哪里获得额外的4个字节?
为什么不抛售字节看? –
@JonSkeet好主意。我会稍微编辑一下。 –
它可能是BOM,00 00 FE FF – irreputable