
1.确定上传请求的路径 (NSURL)
2.创建可变的请求对象(NSMutableURLRequest)
3.修改请求方法为POST
4.设置请求头信息(告知服务器端这是一个文件上传请求)
5.按照固定的格式拼接要上传的文件等参数
6.根据请求对象创建会话对象(NSURLSession对象)
7.根据session对象来创建一个uploadTask上传请求任务
8.执行该上传请求任务(调用resume方法)
9.得到服务器返回的数据,解析数据(上传成功|上传失败)
1.创建可变的请求对象,因为需要修改请求方法为POST,设置请求头信息
2.设置请求头这个步骤可能会被遗漏
3.要处理上传参数的时候,一定要按照固定的格式来进行拼接
4.需要采用合适的方法来获得上传文件的二进制数据类型(MIMEType)
直接百度 搜索
对着该文件发送一个网络请求,接受到该请求响应的时候,可以通过响应头信息中的MIMEType属性得到
使用通用的二进制数据类型表示任意的二进制数据 application/octet-stream
调用C语言的API来实现
AFN在接受到服务器返回数据的时候,内部默认采用以JSON的方式来对响应体信息进行反序列化处理,而如果服务器返回的数据不是JSON而是其他数据比如XML数据或者是图片数据的时候就会提示网络请求失败
如果服务器返回的数据不是JSON,那么应该修改AFN对响应的解析方式
如果是XML数据,则:manager.responseSerializer = [AFXMLParserResponseSerializer serializer]
如果既不是JSON也不是XML,则manager.responseSerializer = [AFHTTPResponseSerializer serializer]
如果是XML数据,则:manager.responseSerializer = [AFXMLParserResponseSerializer serializer]
如果既不是JSON也不是XML,则manager.responseSerializer = [AFHTTPResponseSerializer serializer]
创建会话对象的时候,需要设置代理,让控制器成为session的代理
遵守代理协议(NSURLSessionDataDelegate)
实现代理方法,在代理方法中计算文件的上传进度
创建会话对象的时候,需要设置代理,让控制器成为session的代理
遵守代理协议(NSURLSessionDataDelegate)
实现代理方法,在代理方法中计算文件的上传进度
注意:当任务执行完毕的时候应该释放对代理对象的强引用
defaultSessionConfiguration返回标准配置,这实际上与NSURLConnection的网络协议栈是一样的,具有相同的共享NSHTTPCookieStorage,共享NSURLCache和共享NSURLCredentialStorage
ephemeralSessionConfiguration返回一个预设配置,没有持久性存储的缓存,Cookie或证书。这对于实现像秘密浏览功能的功能来说,是很理想的
backgroundSessionConfiguration:独特之处在于,它会创建一个后台会话。后台会话不同于常规的,普通的会话,它甚至可以在应用程序挂起,退出,崩溃的情况下运行上传和下载任务。初始化时指定的标识符,被用于向任何可能在进程外恢复后台传输的守护进程提供上下文
defaultSessionConfiguration返回标准配置,这实际上与NSURLConnection的网络协议栈是一样的,具有相同的共享NSHTTPCookieStorage,共享NSURLCache和共享NSURLCredentialStorage
ephemeralSessionConfiguration返回一个预设配置,没有持久性存储的缓存,Cookie或证书。这对于实现像秘密浏览功能的功能来说,是很理想的
backgroundSessionConfiguration:独特之处在于,它会创建一个后台会话。后台会话不同于常规的,普通的会话,它甚至可以在应用程序挂起,退出,崩溃的情况下运行上传和下载任务。初始化时指定的标识符,被用于向任何可能在进程外恢复后台传输的守护进程提供上下文
可以很方便的监听文件的下载进度
NSURLSessionDownloadTask在实现文件下载的时候,内部默认把文件下载到了tmp临时路径,等下载完毕之后我们需要执行一个剪切操作
AFN下载请求的实现内部基于NSURLSessionDownloadTask,在使用的时候只需要告知AFN应该把文件剪切到什么路径,那么AFN内部会自动的进行文件剪切处理
展开全文
可以很方便的监听文件的下载进度
NSURLSessionDownloadTask在实现文件下载的时候,内部默认把文件下载到了tmp临时路径,等下载完毕之后我们需要执行一个剪切操作
AFN下载请求的实现内部基于NSURLSessionDownloadTask,在使用的时候只需要告知AFN应该把文件剪切到什么路径,那么AFN内部会自动的进行文件剪切处理
在网络上不允许传输用户隐私数据的明文
在本地不允许保存用户隐私数据的明文
特点:可以将任意的二进制数据进行编码
结果:所有的数据都能被编码为并只用65个字符就能表示的文本文件。65字符:A~Z a~z 0~9 + / =
对文件进行编码后文件数据的变化:编码后的数据~=编码前数据的4/3,会大1/3左右。
编码原理:
将所有字符转化为ASCII码;
将ASCII码转化为8位二进制;
将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;
统一在6位二进制前补两个0凑足8位;
将补0后的二进制转为十进制;
从编码表获取十进制对应的编码
编码原理:
将所有字符转化为ASCII码;
将ASCII码转化为8位二进制;
将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;
统一在6位二进制前补两个0凑足8位;
将补0后的二进制转为十进制;
从编码表获取十进制对应的编码
将所有字符转化为ASCII码;
将ASCII码转化为8位二进制;
将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;
统一在6位二进制前补两个0凑足8位;
将补0后的二进制转为十进制;
从编码表获取十进制对应的编码
加密后密文的长度是定长的
如果明文不一样,那么散列后的结果一定不一样
如果明文一样,那么加密后的密文一定一样(对相同数据加密,加密后的密文一样)
所有的加密算法是公开的
不可以逆推反算
总结:
1 不可逆
2 原文相同 散列值相同
3 原文不同 散列值不同
4 加密后密文的长度是定长的
总结:
1 不可逆
2 原文相同 散列值相同
3 原文不同 散列值不同
4 加密后密文的长度是定长的
1 不可逆
2 原文相同 散列值相同
3 原文不同 散列值不同
4 加密后密文的长度是定长的
搜索 多个关键字,先对每个关键字进行散列,然后多个关键字进行或运算,如果值一致则搜索结果一致
版权 对文件进行散列判断该文件是否是正版或原版的
文件完整性验证 对整个文件进行散列,比较散列值判断文件是否完整或被篡改
特点:
加密和解密使用相同的秘钥
加密和解密的过程是可逆的
性能好,效率高
经典算法
DES 数据加密标准
3DES 使用3个密钥,对消息进行(密钥1·加密)+(密钥2·解密)+(密钥3·加密)
AES 高级加密标准
加密和解密使用相同的秘钥
加密和解密的过程是可逆的
性能好,效率高
DES 数据加密标准
3DES 使用3个密钥,对消息进行(密钥1·加密)+(密钥2·解密)+(密钥3·加密)
AES 高级加密标准
ECB模式的全称为Electronic CodeBook模式。又成为电子密码本模式。
特点:
使用ECB模式加密的时候,相同的明文分组会被转换为相同的密文分组。
类似于一个巨大的明文分组——密文分组的对照表。
CBC模式全称为Cipher Block Chainning模式(密文分组链接模式|电子密码链条)
特点:
在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。
特点:
使用ECB模式加密的时候,相同的明文分组会被转换为相同的密文分组。
类似于一个巨大的明文分组——密文分组的对照表。
使用ECB模式加密的时候,相同的明文分组会被转换为相同的密文分组。
类似于一个巨大的明文分组——密文分组的对照表。
特点:
在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。
在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。
非对称加密的特点:
使用一个密钥对进行加密和解密,公钥加密,私钥解密
公钥是公开的,私钥是保密的
使用非对称加密来处理加密和解密的过程高度安全,但是效率低下,性能很差
经典算法:RSA
使用一个密钥对进行加密和解密,公钥加密,私钥解密
公钥是公开的,私钥是保密的
使用非对称加密来处理加密和解密的过程高度安全,但是效率低下,性能很差
应用场景:需要严格验证发送方身份信息情况
数字签名原理
客户端处理
对消息进行 HASH 得到 消息摘要
发送方使用自己的私钥对消息摘要 加密(数字签名)
把数字签名附着在报文的末尾一起发送给接收方
服务端处理
对消息 HASH 得到 报文摘要
使用公钥对数字签名 解密
对结果进行匹配
客户端处理
对消息进行 HASH 得到 消息摘要
发送方使用自己的私钥对消息摘要 加密(数字签名)
把数字签名附着在报文的末尾一起发送给接收方
服务端处理
对消息 HASH 得到 报文摘要
使用公钥对数字签名 解密
对结果进行匹配
对消息进行 HASH 得到 消息摘要
发送方使用自己的私钥对消息摘要 加密(数字签名)
把数字签名附着在报文的末尾一起发送给接收方
对消息 HASH 得到 报文摘要
使用公钥对数字签名 解密
对结果进行匹配
数字证书就是对公钥进行数字签名
证书和驾照很相似,里面记有姓名、组织、地址等个人信息,以及属于此人的公钥,并有认证机构施加数字签名,只要看到公钥证书,我们就可以知道认证机构认证该公钥的确属于此人
数字证书的主要内容:
公钥
认证机构的数字签名
公钥
认证机构的数字签名
1.分析依赖:该步骤会分析Podfile,查看不同类库之间的依赖情况。如果有多个类库依赖于同一个类库,但是依赖于不同的版本,那么cocoaPods会自动设置一个兼容的版本。
2.下载依赖:根据分析依赖的结果,下载指定版本的类库到本地项目中。
3.生成Pods项目:创建一个Pods项目专门用来编译和管理第三方框架,CocoaPods会将所需的框架,库等内容添加到项目中,并且进行相应的配置。
4.整合Pods项目:将Pods和项目整合到一个工作空间中,并且设置文件链接。
文/timhbw(简书作者)
'>
1.确定上传请求的路径 (NSURL)
2.创建可变的请求对象(NSMutableURLRequest)
3.修改请求方法为POST
4.设置请求头信息(告知服务器端这是一个文件上传请求)
5.按照固定的格式拼接要上传的文件等参数
6.根据请求对象创建会话对象(NSURLSession对象)
7.根据session对象来创建一个uploadTask上传请求任务
8.执行该上传请求任务(调用resume方法)
9.得到服务器返回的数据,解析数据(上传成功|上传失败)
1.创建可变的请求对象,因为需要修改请求方法为POST,设置请求头信息
2.设置请求头这个步骤可能会被遗漏
3.要处理上传参数的时候,一定要按照固定的格式来进行拼接
4.需要采用合适的方法来获得上传文件的二进制数据类型(MIMEType)
直接百度 搜索
对着该文件发送一个网络请求,接受到该请求响应的时候,可以通过响应头信息中的MIMEType属性得到
使用通用的二进制数据类型表示任意的二进制数据 application/octet-stream
调用C语言的API来实现
AFN在接受到服务器返回数据的时候,内部默认采用以JSON的方式来对响应体信息进行反序列化处理,而如果服务器返回的数据不是JSON而是其他数据比如XML数据或者是图片数据的时候就会提示网络请求失败
如果服务器返回的数据不是JSON,那么应该修改AFN对响应的解析方式
如果是XML数据,则:manager.responseSerializer = [AFXMLParserResponseSerializer serializer]
如果既不是JSON也不是XML,则manager.responseSerializer = [AFHTTPResponseSerializer serializer]
如果是XML数据,则:manager.responseSerializer = [AFXMLParserResponseSerializer serializer]
如果既不是JSON也不是XML,则manager.responseSerializer = [AFHTTPResponseSerializer serializer]
创建会话对象的时候,需要设置代理,让控制器成为session的代理
遵守代理协议(NSURLSessionDataDelegate)
实现代理方法,在代理方法中计算文件的上传进度
创建会话对象的时候,需要设置代理,让控制器成为session的代理
遵守代理协议(NSURLSessionDataDelegate)
实现代理方法,在代理方法中计算文件的上传进度
注意:当任务执行完毕的时候应该释放对代理对象的强引用
defaultSessionConfiguration返回标准配置,这实际上与NSURLConnection的网络协议栈是一样的,具有相同的共享NSHTTPCookieStorage,共享NSURLCache和共享NSURLCredentialStorage
ephemeralSessionConfiguration返回一个预设配置,没有持久性存储的缓存,Cookie或证书。这对于实现像秘密浏览功能的功能来说,是很理想的
backgroundSessionConfiguration:独特之处在于,它会创建一个后台会话。后台会话不同于常规的,普通的会话,它甚至可以在应用程序挂起,退出,崩溃的情况下运行上传和下载任务。初始化时指定的标识符,被用于向任何可能在进程外恢复后台传输的守护进程提供上下文
defaultSessionConfiguration返回标准配置,这实际上与NSURLConnection的网络协议栈是一样的,具有相同的共享NSHTTPCookieStorage,共享NSURLCache和共享NSURLCredentialStorage
ephemeralSessionConfiguration返回一个预设配置,没有持久性存储的缓存,Cookie或证书。这对于实现像秘密浏览功能的功能来说,是很理想的
backgroundSessionConfiguration:独特之处在于,它会创建一个后台会话。后台会话不同于常规的,普通的会话,它甚至可以在应用程序挂起,退出,崩溃的情况下运行上传和下载任务。初始化时指定的标识符,被用于向任何可能在进程外恢复后台传输的守护进程提供上下文
可以很方便的监听文件的下载进度
NSURLSessionDownloadTask在实现文件下载的时候,内部默认把文件下载到了tmp临时路径,等下载完毕之后我们需要执行一个剪切操作
AFN下载请求的实现内部基于NSURLSessionDownloadTask,在使用的时候只需要告知AFN应该把文件剪切到什么路径,那么AFN内部会自动的进行文件剪切处理
展开全文
可以很方便的监听文件的下载进度
NSURLSessionDownloadTask在实现文件下载的时候,内部默认把文件下载到了tmp临时路径,等下载完毕之后我们需要执行一个剪切操作
AFN下载请求的实现内部基于NSURLSessionDownloadTask,在使用的时候只需要告知AFN应该把文件剪切到什么路径,那么AFN内部会自动的进行文件剪切处理
在网络上不允许传输用户隐私数据的明文
在本地不允许保存用户隐私数据的明文
特点:可以将任意的二进制数据进行编码
结果:所有的数据都能被编码为并只用65个字符就能表示的文本文件。65字符:A~Z a~z 0~9 + / =
对文件进行编码后文件数据的变化:编码后的数据~=编码前数据的4/3,会大1/3左右。
编码原理:
将所有字符转化为ASCII码;
将ASCII码转化为8位二进制;
将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;
统一在6位二进制前补两个0凑足8位;
将补0后的二进制转为十进制;
从编码表获取十进制对应的编码
编码原理:
将所有字符转化为ASCII码;
将ASCII码转化为8位二进制;
将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;
统一在6位二进制前补两个0凑足8位;
将补0后的二进制转为十进制;
从编码表获取十进制对应的编码
将所有字符转化为ASCII码;
将ASCII码转化为8位二进制;
将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;
统一在6位二进制前补两个0凑足8位;
将补0后的二进制转为十进制;
从编码表获取十进制对应的编码
加密后密文的长度是定长的
如果明文不一样,那么散列后的结果一定不一样
如果明文一样,那么加密后的密文一定一样(对相同数据加密,加密后的密文一样)
所有的加密算法是公开的
不可以逆推反算
总结:
1 不可逆
2 原文相同 散列值相同
3 原文不同 散列值不同
4 加密后密文的长度是定长的
总结:
1 不可逆
2 原文相同 散列值相同
3 原文不同 散列值不同
4 加密后密文的长度是定长的
1 不可逆
2 原文相同 散列值相同
3 原文不同 散列值不同
4 加密后密文的长度是定长的
搜索 多个关键字,先对每个关键字进行散列,然后多个关键字进行或运算,如果值一致则搜索结果一致
版权 对文件进行散列判断该文件是否是正版或原版的
文件完整性验证 对整个文件进行散列,比较散列值判断文件是否完整或被篡改
特点:
加密和解密使用相同的秘钥
加密和解密的过程是可逆的
性能好,效率高
经典算法
DES 数据加密标准
3DES 使用3个密钥,对消息进行(密钥1·加密)+(密钥2·解密)+(密钥3·加密)
AES 高级加密标准
加密和解密使用相同的秘钥
加密和解密的过程是可逆的
性能好,效率高
DES 数据加密标准
3DES 使用3个密钥,对消息进行(密钥1·加密)+(密钥2·解密)+(密钥3·加密)
AES 高级加密标准
ECB模式的全称为Electronic CodeBook模式。又成为电子密码本模式。
特点:
使用ECB模式加密的时候,相同的明文分组会被转换为相同的密文分组。
类似于一个巨大的明文分组——密文分组的对照表。
CBC模式全称为Cipher Block Chainning模式(密文分组链接模式|电子密码链条)
特点:
在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。
特点:
使用ECB模式加密的时候,相同的明文分组会被转换为相同的密文分组。
类似于一个巨大的明文分组——密文分组的对照表。
使用ECB模式加密的时候,相同的明文分组会被转换为相同的密文分组。
类似于一个巨大的明文分组——密文分组的对照表。
特点:
在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。
在CBC模式中,首先将明文分组与前一个密文分组进行XOR运算,然后再进行加密。
非对称加密的特点:
使用一个密钥对进行加密和解密,公钥加密,私钥解密
公钥是公开的,私钥是保密的
使用非对称加密来处理加密和解密的过程高度安全,但是效率低下,性能很差
经典算法:RSA
使用一个密钥对进行加密和解密,公钥加密,私钥解密
公钥是公开的,私钥是保密的
使用非对称加密来处理加密和解密的过程高度安全,但是效率低下,性能很差
应用场景:需要严格验证发送方身份信息情况
数字签名原理
客户端处理
对消息进行 HASH 得到 消息摘要
发送方使用自己的私钥对消息摘要 加密(数字签名)
把数字签名附着在报文的末尾一起发送给接收方
服务端处理
对消息 HASH 得到 报文摘要
使用公钥对数字签名 解密
对结果进行匹配
客户端处理
对消息进行 HASH 得到 消息摘要
发送方使用自己的私钥对消息摘要 加密(数字签名)
把数字签名附着在报文的末尾一起发送给接收方
服务端处理
对消息 HASH 得到 报文摘要
使用公钥对数字签名 解密
对结果进行匹配
对消息进行 HASH 得到 消息摘要
发送方使用自己的私钥对消息摘要 加密(数字签名)
把数字签名附着在报文的末尾一起发送给接收方
对消息 HASH 得到 报文摘要
使用公钥对数字签名 解密
对结果进行匹配
数字证书就是对公钥进行数字签名
证书和驾照很相似,里面记有姓名、组织、地址等个人信息,以及属于此人的公钥,并有认证机构施加数字签名,只要看到公钥证书,我们就可以知道认证机构认证该公钥的确属于此人
数字证书的主要内容:
公钥
认证机构的数字签名
公钥
认证机构的数字签名
1.分析依赖:该步骤会分析Podfile,查看不同类库之间的依赖情况。如果有多个类库依赖于同一个类库,但是依赖于不同的版本,那么cocoaPods会自动设置一个兼容的版本。
2.下载依赖:根据分析依赖的结果,下载指定版本的类库到本地项目中。
3.生成Pods项目:创建一个Pods项目专门用来编译和管理第三方框架,CocoaPods会将所需的框架,库等内容添加到项目中,并且进行相应的配置。
4.整合Pods项目:将Pods和项目整合到一个工作空间中,并且设置文件链接。
文/timhbw(简书作者)
...