用objectC完成的一个有关压缩,加解密的粗糙之作
来源:互联网 发布:淘宝战网点 编辑:程序博客网 时间:2024/06/05 04:24
平台、工具
采用Xcode平台,objective—C语言完成。
设计
数据流图:
以上的数据流,从左往右依次为:
1:加压,加密完成后的文件流
2:原文件流(这里1和2的逻辑上应该反过来的,一时间没注意画反了。)
3:加压,加密完成后的文件流
4:解压,解密后的文件刘
5:日记文字加密后的数据流
6:加密后的数据流
步骤
步骤1:引导界面,由于该界面没有任何数据上的处理,所以只有一个视图,而storyborad生成的单纯视图是没有代码的,所以这里就不贴了。
步骤2:第二步做的是关于文件的加密,压缩部分
首先是将目录下的文件列出:
//设置tableview各种属性 DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 100, 320, 420)]; [DataTable setDelegate:self]; [DataTable setDataSource:self];//这里指定了dataSource为myListArray[self.view addSubview:DataTable]; // Documents文件夹的路径写法 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);NSString *documentPath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil; //文件管理控件NSFileManager * fm = [NSFileManager defaultManager]; //将目录下的文件名导入一个数组中 myListArray = [fm directoryContentsAtPath:documentPath];
接下来就是对选中的文件进行加密,加压
NSString *textValue = [NSString stringWithFormat:@"%@",_textField.text];//获取textfile里的内容 NSFileManager *defaultManager;//创建该实例用于删除文件 defaultManager = [NSFileManager defaultManager]; ZipArchive *zip = [[ZipArchive alloc] init]; FZEasyFile *easyFile = [FZEasyFile sharedInstance]; NSString *heroSelected=[myListArray objectAtIndex:indexPath.row];//indexPath.row得到选中的行号,提取出在数组中的内容。 // 原文件路径 NSString* filePath = [easyFile fullFileName:heroSelected]; NSString* filePath2 = [filePath stringByAppendingString:@".zipp"]; // 开始压缩 [zip CreateZipFile2:filePath2]; // 添加文件 [zip addFileToZip:filePath newname:heroSelected]; //... 此处可以add多个文件 // 结束压缩 if( ![zip CloseZipFile2]) { filePath2 = @""; // 如果压缩失败,则压缩文件路径设置为空。 } //将文件读入 NSString *astring = [[NSString alloc] initWithContentsOfFile:filePath2]; NSLog(@"astring:%@",astring); //AES加密 NSString *message = astring; NSString *password = textValue; NSString *encryptedData = [AESCrypt encrypt:message password:password]; [encryptedData writeToFile:filePath2 atomically:YES ]; //删除原文件 [defaultManager removeItemAtPath:filePath error:nil];
步骤3:对加压加密过的文件进行解密,解压
首先,是将文件列表导入,这部分和步骤2基本一致(后面的也基本一致,为了报告页数,将不再赘叙)
其次是对文件的解压,解密代码
步骤4:做关于日记(备忘录)的加密部分
这部分有了上面的步骤很好理解,就是在文本框内写下日记,加密后写入文件当中,文件以时间命名。
NSString *textValue = [NSString stringWithFormat:@"%@",_textField.text];//获取textfile里的内容 NSFileManager *defaultManager;//创建该实例用于删除文件 defaultManager = [NSFileManager defaultManager]; ZipArchive *zip = [[ZipArchive alloc] init]; FZEasyFile *easyFile = [FZEasyFile sharedInstance]; NSString *heroSelected=[myListArray objectAtIndex:indexPath.row];//indexPath.row得到选中的行号,提取出在数组中的内容。 // 原文件路径 NSString* filePath = [easyFile fullFileName:heroSelected]; NSString* filePath2 = [filePath stringByAppendingString:@".ok"]; //将文件读入 NSString *astring = [[NSString alloc] initWithContentsOfFile:filePath]; //解密 NSString *password = textValue; NSString* message; message = [AESCrypt decrypt:astring password:password]; [message writeToFile:filePath atomically: YES ]; //解压 BOOL result; if ([zip UnzipOpenFile:filePath]) { result = [zip UnzipFileTo:filePath2 overWrite:YES]; if (!result) { NSLog(@"解压失败"); } else { NSLog(@"解压成功"); } [zip UnzipCloseFile]; } //删除原文件 [defaultManager removeItemAtPath:filePath error:nil];
步骤5:基本上是步骤4的逆过程,只是加上了步骤2中的文件列表,由于篇幅的原因,这里不再赘述。
结果讨论
0 0
- 用objectC完成的一个有关压缩,加解密的粗糙之作
- 加解密的一个方法
- 一个不错的加解密代码例子
- 一个简单的文件加解密
- 一个简易的加解密字符串函数
- 一个简单的c++加解密程序
- 一个简单的加解密算法
- 一个聚合的加解密工具类
- DES加密和解密PHP,Java,ObjectC统一的方法
- 一个粗糙的首页……
- 一个粗糙的oppo缓动效果
- 字符串的加解密
- 简单的加解密
- 加解密的前提
- 完成的一个android视频加密解密播放的案例
- 粗糙的iOS笔记之数据存储
- 粗糙的iOS笔记四之绘制
- 粗糙的iOS笔记之文件操作
- atoi
- 通配符与正则表达式
- unity 编辑器的制作(二)
- html 复制 问题。
- 算法5-1:平衡查找树之二三树
- 用objectC完成的一个有关压缩,加解密的粗糙之作
- 抽象基类
- Onvif事件处理模块之基本通知接口模式(NVC部分)
- Android Xposed得到性能数据
- py2exe打包python脚本
- DM8168调试之ASSERT (ipcFramesOutLink_tsk.c|IpcFramesOutLink_copyFrameInfo|275)解决
- 【网络协议】ICMP协议、Ping、Traceroute
- duplicate symbol 错误的解决办法
- 算法5-2:红黑树