BruceWind / AESJniEncrypt

🛡 Make safest code in Android. (基于libsodium实现chacha20算法,key在native中,防止被二次打包){长期维护,请star,勿fork}
Other
1k stars 164 forks source link

如何动态添加秘钥 #18

Closed dxy1046 closed 6 years ago

dxy1046 commented 6 years ago

这个方案看起来是固定秘钥的用法,如果我使用动态秘钥有没有好的解决方案呢

BruceWind commented 6 years ago

你尝试自己修改代码,通过jni方法传递jstring进来。

dxy1046 commented 6 years ago

好的,谢谢解答

BruceWind commented 6 years ago

看这里:JNIEncrypt#95


decode encode方法都会有getkey () 你改为通过jni从java传递进来就好了。

不过,既然你用动态key的话,就把所有AES相关方法名改掉让别人看不出 你是aes算法。

dxy1046 commented 6 years ago

后来我一想如果使用动态秘钥的话,再使用jni方式有点得不偿失了,这样只能做到使用jni来加解密,秘钥还是没办法隐藏,这只是个人见解,对加解密及APP安全方面没有太多的了解

BruceWind commented 6 years ago

对,但是你可以做的是算法保密。

BruceWind commented 6 years ago

或者你网络传递key,可以通过 网络传一个被enocde(key),客户端需要先通过jni decode(str) 得到key,然后再用jni进行加解密。

dxy1046 commented 6 years ago

恩,这个确实是可以做到加密算法的反破译和非法调用难度增加,谢谢