我在安卓上有一个应用程序。我在我的strings.xml
文件上使用 facebook 密钥、twitterkeys。我使用proguard。但是当一个想要查看真实代码的人反编译 myapp 时,是的,这很复杂,因为我使用了 proguard。但是我的字符串值被看到了。是不是安全问题。我想隐藏它们或如何加密它们。
谢谢
我在安卓上有一个应用程序。我在我的strings.xml
文件上使用 facebook 密钥、twitterkeys。我使用proguard。但是当一个想要查看真实代码的人反编译 myapp 时,是的,这很复杂,因为我使用了 proguard。但是我的字符串值被看到了。是不是安全问题。我想隐藏它们或如何加密它们。
谢谢
据我所知,实现目标的唯一可能方法是对每个用户进行物理检查。它可能是用户必须填写一些个人数据的某种形式,因此“物理”一词可能不是这里的最佳选择。我想你可以半自动地做到这一点。
其他方法只是减慢逆向工程师的速度,让他的生活更加艰难。
如果您可以控制您的用户(例如,如果您的应用程序仅适用于某些公司员工),您可以通过提供密码安全下载站点来控制下载该应用程序的人,并仅通过邮件或其他方式将该密码提供给公司员工.
但毕竟 - 每个安全用户都可能是向某些逆向工程师提供 apk 的坏人,所以你永远不会 100% 安全,除非 .apk 格式以某种方式发生变化。
@user3086226
最好在 MD5 哈希中转换。你可以试试这个。
public static String md5(String s) {
MessageDigest digest;
try {
digest = MessageDigest.getInstance("MD5");
digest.update(s.getBytes(), 0, s.length());
String hash = new BigInteger(1, digest.digest()).toString(16);
return hash;
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return "";
}
您可以在存储之前加密值,请通过此链接这里是使用 AES 算法加密字符串值的完整教程。
使用您的文本数据创建一个加密文件并存储在资产中并通过解密从资产中读取它,是更好的解决方案之一