我需要使用XTEA算法加密一些String
,并找到this code,但我不确定如何使用它并获得java.lang.ArrayIndexOutOfBoundsException
。在Java中需要使用XTEA的实现方面的帮助
这里是我如何使用它:
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)
任何人都可以帮忙吗?
回答
至于建议由约翰飞碟双向,我必须将字符串填充,以得到8的倍数:
int len = myString.length();
int newLen = len + (8- len % 8);
while(myString.length()<newSize){
myString += "\0";
}
哪一行引发异常?请显示完整的堆栈跟踪。 (另外,我强烈建议你不要使用'String.getBytes'的重载,它不指定编码。) –
我添加了堆栈跟踪。 – jul