需要在Java中使用XTEA实现的帮助



我需要使用XTEA算法加密一些String,找到了这个代码,但我不知道如何使用它,我得到了一个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)

有人能帮忙吗?

答案

正如约翰·斯基特所建议的那样,我必须填充字符串才能达到8:的倍数

int len = myString.length();
int newLen = len + (8- len % 8);
while(myString.length()<newSize){
    myString += "";
}

看看XTEA上的代码和维基百科条目,问题似乎是它只适用于8字节的块,而你提供的是14字节(不是8的倍数)。

你可能需要添加一些填充,或者从明文中去掉尾随的0,或者如果你需要能够在实际文本中表示U+0000,你可以添加一点数据来说明有多少真实数据。

相关内容

  • 没有找到相关文章

最新更新