我们有一个应用程序在本地存储一些数据,除了用户和我们之外,这些数据对任何其他人都没有值(value)。因此,我们不需要对其进行加密,但我们确实希望确保没有人更改过它。
我认为最简单的方法是根据文件内容、日期戳和/或大小生成哈希。直接执行 md5 可能不够好,因为谁想要更改数据就可以生成一个新的散列,所以使用某种 key 会很好。有谁知道一个简单的方法来做到这一点?我想避免使用诸如 crypto++ 之类的库,但不是 100% 反对它。
哦,我们正在用 C++ 开发应用程序。
也许,我只需要向我们传递给 md5 函数的任何内容添加一些晦涩的数据并完成此操作。大家怎么看?
重申一下,文件对黑客来说没有任何有值(value)的信息,因此没有理由过分重视安全性。我只是想检查设置是否被弄乱了。
谢谢, 安格里斯。
PS> 有没有人知道实现 md5 的好方法,两者都适用?
最佳答案
如果要对数据进行签名,则需要使用 key 和签名算法。要么是像 RSA 这样的非对称的,要么是像 AES 这样的对称的。但是,如果您的应用需要使用它来签署数据,则需要嵌入 key 或以其他方式提供给应用。在这种情况下,潜在的攻击者可以从应用程序中提取它并创建他们自己的有效签名。您可以决定您是否愿意,以及您想在保护它方面走多远。
添加“模糊数据”或以其他方式尝试提出您自己的算法不是一个好主意,您一定会弄错,尤其是如果您没有该领域的经验。请务必使用标准算法,并考虑如何保护 key (使用 iOS key 链等)。搜索“RSA sigantures”或“HMAC”以获取有关如何在实践中执行此操作的更多详细信息。如果您无法从您的 C++ 库(?)中利用该平台的加密 API,您将需要使用并链接到第三方库,例如 OpenSSL。
关于android - 在移动设备(iOS + Android)上签署和验证配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683128/