android通过网络加密json数据
我的应用程序会频繁连接到 Web 服务以获取 json 格式的一些数据。
有没有一种方法可以在服务器端加密这些数据并在应用程序端解密,以便传输的数据安全可靠?
另外,如果应用程序附带自己的数据库(sqlite db 文件),那么使用此应用程序的任何人都可以查看此数据库(表、字段和内容)吗?
问候, 萨潘
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
传输加密数据的最简单选择是使用 SSL(即 https)进行通信应用程序和网络服务。
如果您需要为服务器设置自己的自签名证书(而不是购买证书),那么您可能会在让 android 与其通信时遇到问题,但这是可行的。请参阅这个问题获取提示。
关于读取数据库,也许是可以的。我认为,如果攻击者有足够的决心,就可以访问手机并读取数据库。如果您希望数据真正安全,则必须将数据库存储在加密文件中,并要求用户每次打开您的应用程序时输入密码。
您必须决定您真正需要多少安全性。
不过,当您通过网络传输数据时,您绝对应该对数据进行 SSL 加密。
Your easiest option for transferring the data encrypted is to use SSL (i.e. https) for the communication between the app and the web service.
If you need to set up your own self-signed certificate for the server (instead of buying one) you might have problems getting android to talk with it, but it's doable. See this SO question for tips.
Regarding reading the database, it might be possible. I would assume that an attacker that got access to the phone could read the database, if they were determined enough. If you want the data to be really secure, you would have to store the database in an encrypted file and require the user to enter a password each time they open your app.
You have to decide how much security you really need.
You should definitely go for SSL encryption of the data when you transfer it over the network, though.
你可以在android和服务器中使用crypto来加密/解密json。它非常简单和安全。使用 Base64 并不是一种有效的方法,因为任何人都可以解密。在此,您可以使用密钥来加密和解密字符串。如果使用错误的密钥解密,输出将是错误的。
http://www.androidsnippets.com/encryptdecrypt-strings
You can use crypto to encrypt/decrypt json in both android and server.In it very simple and secure. Using Base64 is not a efficient way, because anyone can decrypt. In this, you can use a secret key to encrypt and decrypt the String. If using wrong key to decrypt, the output will be wrong.
http://www.androidsnippets.com/encryptdecrypt-strings
我使用 Base64 编码和解码来加密网络上的数据。
根据您使用的 Web 服务的类型,它是否具有 Base64 编码和解码。您始终可以通过谷歌搜索其他人编写的代码。
取决于您的目标 Android 版本。
从 API 级别 8 及更高版本开始:http://developer.android.com/reference/ android/util/Base64.html
对于较低版本:http://www.frankdu.com/notes/2011/01/27/base64-encoding-with-android-2-1-or-earlier/
您也可以编写自己的当然是编码和解码系统。 ;)
I use Base64 encoding and decoding to encryt data over the network.
Depending on the type of webservice you are using, it will or will not have Base64 encoding and decoding. You can always google for code made by others.
Depending on the Android version you are targeting.
From API level 8 and up: http://developer.android.com/reference/android/util/Base64.html
For lower: http://www.frankdu.com/notes/2011/01/27/base64-encoding-with-android-2-1-or-earlier/
You could also write your own encoding and decoding systems of course. ;)