Android加密

来源:互联网 发布:认字软件哪个好 编辑:程序博客网 时间:2024/05/22 16:04

前提

为了防止服务器数据被爬, 客户端和服务器传输数据需要加密处理
Java代码容易被破解, 需要将加密逻辑放到C里面
C代码编译成的so文件可能会被二次打包, 不用破解C就能用so爬取服务器数据
福音: Android的keystore文件无法被破解
keystore文件的hash可被其他应用直接通过包名获取

加密方案设计

因为用到加密算法, 而网上包括github的许多库并不是无懈可击, 所以最开始打算用openssl, 然后编译成so库, 或者直接从自己手机的文件里直接扣出来加密库, 然后再网上找找怎么使用, 因为AES具体还有多个种类, RSA也是. 这样还得调研某个加密模式的具体用法.
幸好当时在官网看了下官网的介绍:
Android developer Cipher
文中说openssl已经不建议使用, 现在Android中用的是boringssl, 大喜.
boringssl的介绍:
BoringSSL
这里直接给了建议, 使用C调用JAVA的加密库, 666, 不用调研C的加密实现了
剩下的事情就是用JAVA实现, 然后通过C调用Java的加密. 当然, C里还可以对加密后的数据进一步处理. 所以流程上是Java->C->Java, 然后再return.

通过keystore文件防止破解

参考:
AESJniEncrypt
这里面的逻辑是通过在C中获取当前使用的keystore是不是作者的keystore防止二次打包, 毕竟keystore无法被二次打包.

用JAVA做加密的逻辑是Android官网建议的, 使用keystore防二次打包是必须的, 就这样.

原创粉丝点击