我有一个Android应用程序,它使用HTTP get / post请求从php页面接收数据。我正在加密服务器端的数据并在android中解密。我正在使用AES 128位加密,我已经在android端硬编码了字符串键和iv。如果有人逆向工程师我的apk,他们可以轻松获得密钥和iv。有什么方法可以在apk中安全地存储这两个字符串。 请帮忙
答案 0 :(得分:4)
您可以使用Android 4.3(API级别18)中引入的Android Keystore密钥库提供程序功能。
Android Keystore系统允许您将私钥存储在容器中,从而使从设备中提取更加困难。一旦密钥存在于密钥库中,它们就可以用于加密操作,而私钥材料仍然是不可导出的。 https://developer.android.com/training/articles/keystore.html#UsingAndroidKeyStore
答案 1 :(得分:2)
不,这类似于解决DRM问题。
您当然可以隐藏钥匙,例如使用answer of Alireza,但如果不控制存储的设备,则无法保护密钥。
您当然可以实现自己的传输模式安全性:这样您就不必在APK中拥有密钥(只是一个受信任的公钥或证书)。
然而,快速,简单且最重要的安全方法是使用TLS。特别是在使用前向保密(EDH_或ECDHE_密码套件)时,您的数据应该是安全的。