我正在开发一个电子书阅读器并将ipa文件发送给不同的人。 ipa文件包含一些PDF书籍。有没有办法可以加密PDf文件,这样用户只能在设备上看到它们而不是在PC上...谢谢
答案 0 :(得分:1)
这是一个普遍的安全问题,答案是:否。如果一个设备(iPhone)可以在没有密码或秘密设备密钥等其他数据的情况下解密文件,则另一台设备(台式计算机)也可以这样做。
您所能做的就是对文件进行模糊处理。这将使人们不会简单地解压缩ipa并打开PDF。但是,您采取的任何措施都会使访问文件变得更加困难。没有办法让技术人员获得数据不可能。
答案 1 :(得分:0)
您可以使用数据保护重新保存捆绑包pdf,但它不是防弹的,但它很难读取数据(特别是如果密码未知),但只有在设备通过密码时它才有效。
//There is probobly a quicker way to do this..ie..iterating the bundle programatically for pdf's
NSMutableArray * a = [[NSMutableArray alloc] init];
[a addObject:[NSString stringWithFormat:@"pdf1.pdf"]];
[a addObject:[NSString stringWithFormat:@"pdf2.pdf"]];
[a addObject:[NSString stringWithFormat:@"pdf3.pdf"]];
[self resaveFilesWithProtection:a];
[a release];
-(void)resaveFilesWithProtection:(NSArray*)fileNameArray
{
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString * DocPath = [paths objectAtIndex:0];
NSFileManager *fileManager = [NSFileManager defaultManager];
for (NSString* s in fileNameArray) {
NSString * fullFilepath = [DocPath stringByAppendingPathComponent:s];//getting path to file
NSData *myData = [NSData dataWithContentsOfFile:filePath];//getting data out of old file
[fileManager removeItemAtPath:fullFilepath error:NULL];//deleting old file
NSError*er=nil;
[myData writeToFile:fullFilepath options:NSDataWritingFileProtectionComplete error:&er]; //saving back to disk with protection
}
NSLog(@"DONE");
}
您还可以将NSData存储在SQLite数据库中,或者通过将文件扩展名重新保存为.anything来隐藏文件扩展名。
编辑:
如果您不希望用户能够解压缩ipa并且您认为扩展模糊不够,那么您将不得不将pdf放入捆绑包中并将其从网络中拉下来。< / p>