我正在Android Studio中开发一个应用,并且正在通过Jsons将数据从服务器传递到手机。
我是否可以加密Json数据?
将加密/解密密钥存储到静态变量中是否安全?如果没有,我应该在Android的哪个位置存储密钥?
下面的链接都没有帮助我
答案 0 :(得分:0)
您的问题的解决方案是证书固定。它可以防止来自中间人的攻击。 证书固定是指您的应用正在通过与应用程序捆绑的证书进行比较,来验证与该应用进行通信的站点是实际站点。 请参考以下链接以获取更多信息
答案 1 :(得分:0)
据我所知,您必须为此使用 PGP 算法!
答案 2 :(得分:0)
是的,Android与服务器之间的通信可以安全进行,并且您可以加密JSON有效负载。看看这个git hub存储库,了解如何加密JSON有效负载。 Encrypt your JSON payload(android project)
您可以生成一个公钥-私钥对,并且仅与客户端(Android)共享您的公钥。您可以以任何想要的方式在Android设备上保存公钥。 https
也是确保客户端和服务器之间通信安全的好方法,但是请查看此question来帮助您获得更多指导。
答案 3 :(得分:0)
将加密/解密密钥存储到静态变量中绝对不安全。
对于这种通信,不是使用服务器和应用程序之间共享一个秘密(对称)密钥(必须安排和跟踪),而是使用非对称密钥对。密钥对是私钥和相应的公钥。
假设您只需要对从服务器到应用程序的一种数据进行加密:您的应用程序会生成一个随机的,可分配的临时密钥对,并将公钥发送到服务器。然后,服务器可以使用该公用密钥对发送回应用程序的消息进行加密,而不会看到私有密钥,并且只能使用从未离开应用程序的私有密钥对消息进行解密。公钥不能用于解密,只能用于加密。
如果该密钥对仅是为该交换而创建的,则可以在任何时候(或在到期日期/时间之后)丢弃该密钥对并建立一个新的对进行通信。
也就是说,这一切都是通过https连接自动在两个方向(两对密钥)上完成的。因此,我猜想进行设置将满足您的需求。否则,您有点在重新发明轮子。除非您想要那种对安全性的严格控制。即使那样,两者都做!