encryption - 如何混淆加密功能的 key ?

标签 encryption cryptography obfuscation decompiling

如果加密函数需要 key ,您如何混淆源代码中的 key ,以便反编译不会泄露 key ,从而实现解密?

最佳答案

答案在很大程度上取决于平台和开发工具,但通常没有可靠的解决方案。加密功能是 key 必须以其“自然”形式存在的点。所以黑客需要做的就是将断点放在那里并转储 key 。甚至不需要反编译任何东西。因此,任何混淆只对新手有好处,或者当由于任何原因无法调试时。使用应用程序中存在的文本字符串作为 key 是一种变体。

但最好的办法当然是不要把 key 放在里面。根据您的使用场景,您有时可以使用一些系统信息(例如智能手机的 IMEI)作为 key 。在其他情况下,您可以在安装应用程序时生成 key 并将该 key 存储为应用程序数据的组成部分(例如,使用数据库的列名作为 key ,或类似的东西)。

不过,如前所述,当可以运行调试器时,所有这些都相对容易跟踪。

有一种方法可以抵消调试——将解密卸载给第三方。这可以通过使用外部加密设备(USB 加密 token 或智能卡)或通过调用 Web 服务来解密信息的某些部分来完成。当然,也有一些方法只适用于有限的场景。

关于encryption - 如何混淆加密功能的 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10731372/

相关文章:

java - Android:如何使用 minifyEnabled 生成签名的 APK

android - 使用混淆器的 ksoap2 和 actionbarscherlock 之间的冲突

java - 在 AES 加密中,迭代次数真的会增加安全性吗?

encryption - 解码英国的 NHS 测试和追踪二维码

Java凯撒密码暴力破解

java - 从字符串创建 ECPublicKey

java - 混淆会影响性能吗?

javascript - 修改 Cordova SQLite 插件

php - aes-128-cbc 和 aes-128 加密有什么区别吗?

encoding - 加密数字数据,同时保留密文之间的不平等