一文件压缩.这里我们需要一个第三方SSZipArchive(需要添加libz.td)

 #import "ViewController.h"
#import "SSZipArchive.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//获取沙盒地址
NSLog(@"%@",NSHomeDirectory()); NSArray * array = @[[[NSBundle mainBundle] pathForResource:@"传输中加密" ofType:@"png"],
[[NSBundle mainBundle] pathForResource:@"加密请求头" ofType:@"png"]
];
// 根据所有文件的地址压缩文件
[SSZipArchive createZipFileAtPath:@"/Users/wxn/Desktop/image.zip" withFilesAtPaths:array]; NSString * path = [[[NSBundle mainBundle] bundlePath]
stringByAppendingPathComponent:@"images"]; NSLog(@"%@",path);
//根据目录压缩文件
[SSZipArchive createZipFileAtPath:@"/Users/wxn/Desktop/image.zip" withContentsOfDirectory:path]; }
 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {

   //触屏压缩跟解压
[[[NSURLSession sharedSession] downloadTaskWithURL:[NSURL URLWithString:@"http://localhost/image.zip"] completionHandler: ^(NSURL * _Nullable location, NSURLResponse * _Nullable response, NSError * _Nullable error) { //unzipFileAtPath 压缩包的路径
//toDestination 解压后的路径 NSString * cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; [SSZipArchive unzipFileAtPath:location.path toDestination:cachesPath]; }] resume];
}

二数据加密

1.Base64加密

1、 字符串转化为base64字符串

NSString * string = @"ABC";

    NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding];(字符串转UTF8data)

    NSString * base64String = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];(data转字符串)

    NSLog(@"%@",base64String);

//    2、加密后的data转化成加密前的字符串

//     将普通的data转化为加密后的data

NSString * string = @"ABC";

    NSData * data = [string dataUsingEncoding:NSUTF8StringEncoding];

    NSData * base64Data = [data base64EncodedDataWithOptions:];    

//加密后的Data转换为普通data

  NSData * data2 = [[NSData alloc] initWithBase64EncodedData:base64Data options:];

    NSString * string2 = [[NSString alloc] initWithData:data2 encoding:NSUTF8StringEncoding];

    NSLog(@"%@",string2);
  UIImage * image = [UIImage imageNamed:@""];
NSData * data = UIImagePNGRepresentation(image); NSString * base64String = [data base64EncodedStringWithOptions:]; //解密图片
NSData * decodeData = [[NSData alloc] initWithBase64EncodedString:base64String options:];
UIImage * decodeImage = [[UIImage alloc] initWithData:decodeData]; self.imageView.image = decodeImage;

2.MOD加密

MD5同样是需要第三方代码

Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护

是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。

MD5算法具有以下特点:

1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。

相比较Base64,原则上MD5是不可逆的,当然市面上有在线破解MD5但是

较复杂的破解时间相对长,因此MD5还是很可靠的

我们可以加盐来增加破译难度。

 #import "ViewController.h"
#import "NSString+Hash.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. NSString * password = @""; NSLog(@"%@",password.md5String); //md5加盐
NSString * repassword = [password stringByAppendingString:@"vbd,AS.JFLD.ADj"]; NSLog(@"%@",repassword.md5String);
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

3.其他加密方式

国家规定密码不能明文存储

因此常用来密码加密的有MD5+盐

盐选用即时传送的时间

这个是加密请求头

除了MD5还有一个更靠谱的加密方式

iCloud 钥匙串,这是苹果给我们提供的密码保存的解决方案,iOS7之后有的。

存沙盒:

1、如果手机越狱,密码容易被窃取。

2、当软件更新时,沙盒里的内容是不被删除的。但是,如果将软件卸载后重装,沙盒里的数据就没有了。

3、每个APP的沙盒是相对独立的,密码无法共用。

存钥匙串里:

1、苹果提供的安全方案,rsa加密,相对安全。

2、无论软件更新或删除,密码都存在,都可以自动登录。

3、同一公司的APP密码是可以共用的。

钥匙串c语言的

 #import "ViewController.h"
#import "NSString+Hash.h"
#import "SSKeychain.h"
@interface ViewController () @property (weak, nonatomic) IBOutlet UITextField *usernameTF; @property (weak, nonatomic) IBOutlet UITextField *passwordTF; @end @implementation ViewController - (IBAction)login:(id)sender { NSString * username = self.usernameTF.text;
NSString * password = self.passwordTF.text; /**
* setPassword 密码
Service 服务标识
account 用户名
*/ #define kLoginService @"loginService" [SSKeychain setPassword:password forService:kLoginService account:username error:NULL]; // NSUserDefaults * ud = [NSUserDefaults standardUserDefaults];
//
// [ud setObject:username forKey:@"username"];
// [ud setObject:password forKey:@"password"];
//
// [ud synchronize];
} - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib. NSLog(@"%@",NSHomeDirectory()); //获取所有账户
for (id keychain in [SSKeychain allAccounts]) { NSLog(@"%@",keychain);
} // self.usernameTF.text = @"Daquan";
//
// //通过服务,账号找到密码
// self.passwordTF.text = [SSKeychain passwordForService:kLoginService account:@"Daquan" error:NULL]; //删除钥匙串 // [SSKeychain deletePasswordForService:kLoginService account:@"Daquan" error:NULL]; // NSUserDefaults * ud = [NSUserDefaults standardUserDefaults];
//
// NSString * username = [ud objectForKey:@"username"];
// NSString * password = [ud objectForKey:@"password"];
//
// if (username&&password) {
//
// self.usernameTF.text = username;
// self.passwordTF.text = password;
// } } - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end

iOS文件解压&&数据加密的更多相关文章

  1. 将.war文件解压到指定目录

    jar命令无法将.jar解压到指定目录,因为-C参数只在创建或更新包的时候可用 要将.jar文件解压到指定目录可以用unzip命令 unzip命令在windows下自带就有,不用另外下载安装 下面是将 ...

  2. Linux:文件解压与压缩

    文件打包与压缩 常见压缩文件格式: |文件后缀名 |说明| |.zip |zip程序打包压缩的文件| |.rar |rar程序压缩的文件| |.7z |7zip程序压缩的文件| |.tar |tar程 ...

  3. 将war文件解压到指定目录

    问:如何将.war文件解压到指定目录? 答:jar命令没有这样的选项. eg:将abc.war解压到当前文件夹? 答:进入目标文件即abc.war文件所在的文件夹,按住shift键并在该文件夹空白处点 ...

  4. ZIP文件解压

    public class DZip { /// <summary> /// 压缩为ZIP文件 /// </summary> public void Zip(string dir ...

  5. java压缩文件解压:调用WinRAR5命令强于自己写代码实现

    最近,手上维护着一个几年前的系统,技术是用的JSP+Strust2,系统提供了rar和zip两种压缩格式的解压功能,后台是用java实现的 1.解压rar格式,采用的是java-unrar-0.3.j ...

  6. 将tgz文件解压到指定目录

    转:http://blog.csdn.net/zhenwenxian/article/details/4400404 tar在linux上是常用的打包.压缩.加压缩工具,他的参数很多,折里仅仅列举常用 ...

  7. Linux 下面解压.tar.gz 和.gz文件解压的方式

    Linux 下面解压.tar.gz 和.gz文件解压的方式 两种解压方式 1 .tar.gz 使用tar命令进行解压 tar -zxvf java.tar.gz 解压到指定的文件夹 tar -zxvf ...

  8. [Linux]-Linux常用命令之文件解压

    不压缩方式压缩的文件需要不同的命令来解压缩,下面是Linux的各种文件解压命令. 对于.tar结尾的文件: tar -xf 对于.gz结尾的文件 : gzip -d all.gz gunzip all ...

  9. hadoop 使用map将SequenFile里的小文件解压出来

    上例中将HDFS里小文件通过mapper压缩到一个文件中,本例将这些小文件解压出来. mapreduce可以按SequenceFile的key进行分片. 1.mapper public class M ...

随机推荐

  1. Entity Framework 实体框架的形成之旅--基于泛型的仓储模式的实体框架(1)

    很久没有写博客了,一些读者也经常问问一些问题,不过最近我确实也很忙,除了处理日常工作外,平常主要的时间也花在了继续研究微软的实体框架(EntityFramework)方面了.这个实体框架加入了很多特性 ...

  2. 使用jquery的append(content)方法的注意事项

    append(content)函数:向每个匹配的元素内部追加内容. 如以下示例: 向所有段落中追加一些HTML标记. HTML 代码: <p>I would like to say: &l ...

  3. 炉石传说 C# 开发笔记 (续)

    炉石传说山寨的工作一直在进行着,在开发过程中深深体会到,对于业务的理解和整个程序的架构的整理远比开发难得多. 在开发过程中,如果你的模型不合理,不准确,很有可能造成代码的混乱,冗余,难以维护和扩展性比 ...

  4. MVC之前的那点事儿系列

    MVC之前的那点事儿系列,是笔者在2012年初阅读MVC3源码的时候整理的,主要讲述的是从HTTP请求道进入MVCHandler之前的内容,包括了原创,翻译,转载,整理等各类型文章,当然也参考了博客园 ...

  5. xamarin.ios 跳转页面

    一:用Segue跳转页面 按住Ctrl连线,选择show,后台覆写 ShouldPerformSegue方法,返回True跳转,False取消跳转.   二:通过代码跳转至StoryBoard页面 U ...

  6. MySQL的Incorrect string value错误

    用以下SQL语句向表2中插入数据: insert into 表2 select * from 表1 结果出现Incorrect string value错误: 打开表2一看,里面全是问号: 后来才发现 ...

  7. 设置Xshell中支持中文

    执行echo $LANG命令输出的是当前的编码方式,执行locale命令得到系统中所有可用的编码方式.要让Xshell不显示乱码,则要将编码方式改为UTF-8. 在Xshell中[file]-> ...

  8. Java集合源码分析(二)ArrayList

    ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线 ...

  9. Elasticsearch1.7到2.3升级实践总结

    概括 简述 升级分为Elasticsearch server升级和Elasticsearch client api升级 为什么要迁移 当前团队内多个业务方公用一套ES集群,容易被影响,重要业务应该独自 ...

  10. [小北De编程手记] : Lesson 05 玩转 xUnit.Net 之 从Assert谈UT框架实践

    这一篇,本文会介绍一下基本的断言概念,但重点会放在企业级单元测试的相关功能上面.下面来跟大家分享一下xUnit.Net的断言,主要涉及到以下内容: 关于断言的概念 xUnit.Net常用的断言 关于单 ...