需求是Android或ios应用内下载文件或数据到本地后能有一个加密方案使得这些文
件只有通过本应用看。查网上看到用sqlite加密(SQLCipher)是比较好的方案,问题是解密的秘钥放在哪里比较安全,另外除了数据加密存储之外还有其他好的方案吗?
关键是看你加密的意图是什么,防止通讯过程被监听还是防止客户端文件被破解(包括用户本人),还是防止除了用户以外的别人破解
简单的就把密钥放在程序中,只要防止被反编译出明文就差不多了。
秘钥放在哪里都可以,关键是要把秘钥再加密,使用的时候解密,算法放在so文件中可以有效防止逆向破解
Young_Liu 的方案比较认同,或者你可以直接把你的秘钥放在so文件中?
Young_Liu 方案不错,稍微复杂点
其实密钥放在程序中也基本上没问题,一般程序都打成so的
看安全性级别了
算法和key放so里是比较靠谱了,不过还是要保护好app别被反编译,否则别人一样可以直接用你的so
key放服务器更好一些
可以 模仿SSH 的会话
加密真正秘钥存储在服务端(key) ,另外服务端 和客户端会话建立的时候使用 公钥--私钥 的机制建立会话。
1 客户端 向服务器发送 请求一个串(sessionKey)(作为会话秘钥),使用公钥加密
2.服务端使用 私钥解密。然后使用这个串对 key加密,返回客户端。
3,。客户端使用sessionKey 解密,得到真正的key。
以上流程,key存储在 服务端,防止客户端破解。 sessionkey可以在每次登录的时候随机生成。
同意楼上,有网可以考虑将秘钥,非对称加密后存放到服务器后进行获取。如果没网就反正本地so