APP 的文件数据加解密问题

2019-01-02 17:40:17 +08:00
 zcy4089

应用背景:

做 A 操作的时候,记录下当时的一些文本信息,经过一定的加密,保存到文件里;做 B 操作的时候,读取并解密文件里的信息,拿来处理逻辑。

问题:

我这些信息要做一种怎么样的加密,才能防止信息被别人看到(看懂)。

加密学这块有点小白,请教 V 站大神。

1415 次点击
所在节点    问与答
14 条回复
jinksw
2019-01-02 17:44:55 +08:00
aes 加密呗
chinvo
2019-01-02 17:50:17 +08:00
对称用 AES,非对称用 RSA
zcy4089
2019-01-02 17:50:32 +08:00
@jinksw #1
我也考虑过这种。但是会不会有隐患:这个密钥应该放在代码的哪个地方,万一 APK 被人反编译了,别人是不是同时也知道密钥了,信息也就会被解密了。还是说我想多了?
liuminghao233
2019-01-02 17:52:37 +08:00
密钥一般是放用户脑子里的
zcy4089
2019-01-02 17:53:08 +08:00
@chinvo #2
谢谢。
请问这个时候如果我把公钥和私钥都打包在 APK 里,APK 被人反编译后,是不是就暴露了。正常做法应该是把公钥和密钥放在哪里?
chinvo
2019-01-02 17:54:17 +08:00
@zcy4089 用户主密钥(即由用户手动输入密钥)和设备密钥(第一次启动时生成并存放在 keychain )

但是一般不会单独使用设备密钥
chinvo
2019-01-02 17:56:44 +08:00
@zcy4089 #5 另外在用非对称加密的时候,可以考虑加密(甚至解密也是)在服务器端执行,客户端和服务器之间用 https 并配合相应的鉴权逻辑防止未授权解密
zcy4089
2019-01-02 18:18:20 +08:00
@liuminghao233 #4

@chinvo #6

对不起我没描述清楚。我这个加密不是为了用户加密的,是为了我们本身(防止一些核心数据被用户或竞争对手知道),所以让用户输入密钥不大可行。
zcy4089
2019-01-02 18:20:40 +08:00
@chinvo #7
目前我这个应用没有联网功能。谢谢你的耐心回答!
jinksw
2019-01-02 18:27:21 +08:00
@zcy4089 你但凡把密钥和内容放在本地,不管是哪,只要人家想破解,肯定能破解。
你只能说增加破解的难度
比如说 密钥从不同的地方拼接生成
再比如 加固应用 增加反编译的难度
WordTian
2019-01-02 18:31:35 +08:00
公钥密钥往 native 层里放呗,然后 so 文件再用 vmp 加一层壳
alvin666
2019-01-02 18:36:20 +08:00
安卓无解,xposed 直接读,改内存,怎么防都防不住
加密还有性能问题
liuminghao233
2019-01-02 18:36:54 +08:00
vmp+1
sigup
2019-01-02 18:56:55 +08:00
只要程序能解密,别人就能解密,hook 大法可破一切

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/523194

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX