加密/解密.plist文件ios

zaa*_*nso 8 encryption plist ios

我有一个带有一些存储数据的plist,并希望加密解密,因此使用目标c无法读取.我已经阅读过关于AES加密等但我希望整个plist加密一些如何不是plist中的字符串....

任何帮助将非常感激.

how*_*ghk 5

使用https://web.archive.org/web/20150612123348/http://blog.objectgraph.com/index.php/2010/04/20/encrypting-decrypting-base64-encode-decode-in-中的代码iphone-objective-c /(您在评论中提供的链接),您可以通过以下方式加密plist:

NSData *plistFileData = [NSData dataWithContentsOfFile:plistPath];
NSData *encryptedData = [plistFileData AESEncryptWithPassphrase:password];
[encryptedData writeToFile:encryptedPath atomically:YES];
Run Code Online (Sandbox Code Playgroud)

plistPath是包含路径要加密的plist文件一个NSString的
密码是你想使用的加密密钥
encryptedPath是要保存加密文件

解密:

NSData *encryptedData = [NSData dataWithContentsOfFile:encryptedPath];
NSData *plistFileData = [plistFileData AESDecryptWithPassphrase:password];
[plistFileData writeToFile:plistPath atomically:YES];
Run Code Online (Sandbox Code Playgroud)

encryptedPath是包含路径加密plist文件一个NSString的
密码是你想使用的加密密钥
plistPath是要保存解密的plist文件


fri*_*rin 3

howanghk 提供的链接包含有错误的代码。在该网页上应用 InoriXu 提供的修复程序来解决该问题。您必须修改加密和解密函数。

所以在一行之后:

const char *password = [pass UTF8String];
Run Code Online (Sandbox Code Playgroud)

添加:

const int passwordLen = [pass length];
Run Code Online (Sandbox Code Playgroud)

并更改行:

key[i] = password != 0 ? *password++ : 0;
Run Code Online (Sandbox Code Playgroud)

进入:

key[i] = i < passwordLen != 0 ? *password++ : 0;
Run Code Online (Sandbox Code Playgroud)

代码本身仍然在后面添加了一些空格填充,但如果您需要它来加密属性列表,那就没问题了。