Bruce

Results 67 comments of Bruce

private final String str = "111111"; //下面的密文对应的原文:123abcABC&*(@#@#@)+_/中文测试 String code = AESEncrypt.encode(this, str); Log.d("code", code + ""); Log.d("code", AESEncrypt.decode(this,code) + ""); -------------------- log : 07-19 11:36:52.364 5799-5799/com.androidyuan.aesjniencrypt D/code: rfTzn9WjsDFbK262m0k4xg== 07-19 11:36:52.365...

“这里应该是把后面填充的内容去掉吧,不足16填充几个几” 第一句说对了,第二句不对,没有填充,你看返回的Jstring真实的值,后面的字符被忽略了。 使用这个函数的位置: ``` //去除结尾垃圾字符串 begin int index = findPaddingIndex(out); if(index==NULL) { return (char*)out; } if(index < strlen(out)){// if (index>strlen) will crash. memset(out+index, '\0', strlen(out)-index); } //去除结尾垃圾字符串 end ```

好的。我再看下 。。。

测试了,确实如此,这个问题,需要后面我来改下,我之前故意跳过了"\n"字符串,你急着使用到商业项目中的话,可以先把那个if里的东西删掉,但是,你的原文中一定不能有'\n' ,否则'\n'之后的东西就会丢失。

``` if (HEX[k]==c && HEX[k]!= 0x0a) ``` to ``` if (HEX[k]==c) ```

你弄好了,可以推一个pull request给我。

我大概知道怎么改了: 这个方法 findPaddingIndex(uint8_t * str) for循环应该从后往前查,查到第一个有效字符的位置,停止。 ``` for (i = strlen(str); i >=0 ; i--) ```

是的。 你可以试试 ,\n在开头 在中间 在结尾 ,各种情况,解密出来 有没有丢\n。

Sorry every one, AES is no longer supported. I have pushed code that use chacah20 instead of AES. https://github.com/BruceWind/AESJniEncrypt/pull/40

> 关于**\n**或者**空格**字符串丢失问题。 我在libsodium上会遇到同样的问题,我的solution是这样子:[13d589890ecae106985bf91897243eb8f55e8bc5](https://github.com/BruceWind/AESJniEncrypt/commit/13d589890ecae106985bf91897243eb8f55e8bc5).