【发布时间】:2012-11-29 15:15:32
【问题描述】:
我有一个 48 个字符的 AES-192 加密密钥,我用它来解密一个加密的数据库。
但是,它告诉我密钥长度无效,所以我记录了 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
标签: java android string jvm dalvik