我需要String
使用 XTEA 算法加密一些,并找到了这段代码,但我不确定如何使用它,我得到了一个java.lang.ArrayIndexOutOfBoundsException
.
这是我使用它的方式:
XTEA mXTEA = new XTEA();
mXTEA.setKey(XTEA_KEY.getBytes());
byte[] b = someString.getBytes();
mXTEA.encrypt(b, 0, b.length);
更具体地说,我不确定encrypt
. 我假设这off
是一些偏移量,并且len
是输入流的长度。
编辑
她是完整的堆栈跟踪:
08-12 16:42:03.475: E/AndroidRuntime(23894): Caused by: java.lang.ArrayIndexOutOfBoundsException: length=14; index=14
08-12 16:42:03.475: E/AndroidRuntime(23894): at xxx.XTEA.encryptBlock(XTEA.java:56)
08-12 16:42:03.475: E/AndroidRuntime(23894): at xxx.XTEA.encrypt(XTEA.java:43)
有人可以帮忙吗?
回答
正如 John Skeet 所建议的,我必须填充字符串以达到 8 的倍数:
int len = myString.length();
int newLen = len + (8- len % 8);
while(myString.length()<newSize){
myString += "\0";
}