6

已编辑

好的,抛开投票反对意见并不能真正帮助解决问题。如果您没有任何有用的内容要说并且您对问题不感兴趣,只需更改页面即可。如果您有想法或者您只是对了解不同的方法感兴趣,那么欢迎您的评论,即使它不完美或者只是一个尝试的想法

问题:

我需要将应用程序数据存储在 iPhone 应用程序中。

我们最初使用经典的 NSDocumentDirectory 路径存储数据......但是这种方法有多“安全”?

在不考虑越狱设备的情况下(我目前对此不感兴趣),似乎任何用户(在任何正版设备上)都可以使用简单的 iPhone 浏览软件导航到该文件夹​​并弄乱内容,有效地破解它.

如果是这种情况,为了存储安全的通用数据(在这种情况下不一定是密码),最好使用什么“位置”或“方法”。

即使在这些情况下,KeyChain 是正确的方式还是有更好/替代的方式?

注意和核心问题:

我知道使用密钥等加密和保护数据。我不是在谈论“混淆或保护其内容”

这里的问题是不同的。所以让我们这样说:

“您如何避免用户可以访问存储文件(数据、加密文件、sql 文件、您喜欢的任何内容)的文件夹,并以任何方式将它们弄乱(这可能是删除它们、复制它们、访问它们使用十六进制编辑器和修改值,无论如何)。

这不是他们用它做什么的重点,而是一个更严格的如何确保用户根本无法接触到他们

谢谢

4

2 回答 2

4

您可以使用加密算法来保护数据并保存在 sqlite db 或文档字典中的文件中。

请看一下这个应用程序,这个应用程序解释了使用安全密钥加密或解密数据的 AES 算法。

在您的应用程序中, 在您所需的文件中使用来自存储库AES256AndBase64的Helper 类。#import "NSString+AESCrypt.h"

加密/解密数据的用途AES256EcryptWithKey:AES256DecryptWithKey:方法:

NSString* dummyString=@"Steve Job";

NSLog(@"Normal String- %@",dummyString);

NSString* encrypt_decrypt_Key=@"apple";

NSString *encryptString = [dummyString
                              AES256EncryptWithKey:encrypt_decrypt_Key];

NSLog(@"Encrypt String- %@",encryptString);

NSString *decryptString = [encryptString
                           AES256DecryptWithKey:encrypt_decrypt_Key];

NSLog(@"Decrypt String- %@",decryptString);

或者,如果您使用的是 iOS 5 及更高版本,请查看此博客

于 2012-11-26T17:54:03.167 回答
0

我不确定,但是,在您的 iPhone 中删除应用程序后,密钥链值不会被删除。

加密是一种方法。或者您可以尝试一些哈希算法,例如 SHA 或 MD5 来对您的数据进行哈希处理。散列后,您将数据和散列数据保存到 NSDocumentDirectory。当你需要你的数据时,通过查看散列数据检查它是否发生了变化。

于 2012-11-26T19:26:31.017 回答