保护我的应用程序中嵌入的加密密钥

时间:2013-04-04 16:44:40

标签: macos cocoa encryption

我想加密NSString所以我提到了AES Encription for NSString。 该代码效果很好,我可以使用它。

但如果有人能够掌握加密密钥,则可以轻松解码我的NSString

我在终端上对生成的可执行文件执行了strings -a命令,然后我就能看到加密密钥。

因此,我们在数据发送之前对其进行了保护,但加密密钥仍然存在。如何保护此加密密钥?

编辑:我在系统上运行了多个进程。有时,他们通过发布通知与NSDistributedNotificationCenter进行通信。有时,通知充当命令。我担心的是任何人都可以发布通知并试图欺骗我的过程。所以我决定使用postNotificationName:object:userInfo:deliverImmediately:。在这个API中,我可以发送加密数据(命令),只有我的可执行文件知道加密密钥。

1 个答案:

答案 0 :(得分:2)

你永远不能真正隐藏字符串,只是混淆它以保护自己免受简单的攻击。一个合理的解决方案是使用已知常数对其进行异或。将字符串分开为单个字节,每个字节使用已知编号进行异或,并将生成的字节数组存储在二进制文件中。当你需要使用字符串时,再次使用相同的常量对数组字节进行异或,并从结果字节数组中创建一个字符串。