大佬教程收集整理的这篇文章主要介绍了在Android App中存储机密和凭据,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
一些消息来源建议将凭证存储在项目gradle.properties文件中.从那里,凭据将作为BuildConfig.FIELD_NAME进行检索.我可以100%确定在逆向工程时无法从apk中提取这些内容吗?
我想到的另一种方法是使用非对称加密算法(使用公钥 – 私钥)加密凭证,并在需要时在运行时解密它们,但同样,我需要在应用程序内部的某处存储公钥以解密证书.这不再起作用,因为可以提取反编译apk的公钥.
我已经做了很多研究,但在这种情况下我找不到任何帮助.几乎每篇文章都指的是如何存储密码之类的凭证,但这不是相同的情况,因为我没有从服务器或运行时的任何地方检索我的秘密和凭据.进行API调用以获取凭据再次是一件坏事.
我100%肯定它可以被检索:). Java不会加密任何字符串,它们将全部存储为dex文件中的原始文本,随时可以进行grep.
从那里开始,接下来的步骤是使用静态密钥加密代码中的密钥.有些工具会为你做这件事,比如dexguard,Dasho,Dexprotector – 你也可以拿出自己的解决方案.This article解释得很好.
请记住,您自己的解决方案或第三方工具提供的解决方案可能很容易逆转:请参阅this example for dexguard.还请注意,在运行时解密时,这些凭据将在设备的RAM中清除,从而允许调试器轻松读取它们.
您的下一个最佳选择是在本机代码中使用加密字符串:更难以反向和跟踪,但仍然可行.
然后,您可以使用白盒加密技术,再次使用Inside Secure提议的第三方工具.这基本上将加密算法和密钥混合到混淆的本机代码中,这可能使您难以反向和难以调试加密/解密方法.在这里,您只能在应用中包含加密凭据,并且它们将在白盒内安全地解密.白盒通常非常安全(但不是不可能破解),但一旦解密,凭证将在设备的内存中清晰@L_616_33@.这样可以更彻底地防止简单的反编译.
以上是大佬教程为你收集整理的在Android App中存储机密和凭据全部内容,希望文章能够帮你解决在Android App中存储机密和凭据所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。