一、将密钥分红不一样的几段,有的存储在文件中、有的存储在代码中,最后将他们拼接起来,能够将整个操做写的很复杂,这由于仍是在java层,逆向者只要花点时间,也很容易被逆向。 二、用ndk开发,将密钥放在so文件,加密解密操做都在so文件里,这从必定程度上提升了的安全性,挡住了一些逆向者,可是有经验的逆向者仍是会使用IDA破解的。 三、在so文件中不存储密钥,so文件中对密钥进行加解密操做,将密钥加密后的密钥命名为其余普通文件,存放在assets目录下或者其余目录下,接着在so文件里面添加无关代码(花指令),虽然能够增长静态分析难度,可是可使用动态调式的方法,追踪加密解密函数,也能够查找到密钥内容。java
**白盒加密技术的核心思想是把秘钥隐藏起来, 加密执行过程当中, 内存中不会出现秘钥的值. 如今通用的技术是查找表技术, 即把秘钥隐藏在查找表中。白盒加密的攻击须要从数学理论上去分析, 这无疑会极大增长破解难度。白盒加密的安全度目前来看是能够值得信任的, 固然这个世界上没有绝对的安全, 白盒加密也会被破, 就是攻击成本的问题啦. **安全