我需要使用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