在ios学习中大家都知道在
iOS
中使用AES进行媒体文件的加密与解密是一个非常难以实现的技术,很多同学都遇到过这个问题,在
ios教程
中有很多对此的解决办法,在这里
通过一个实例为大家讲解如何实现这个功能。
之前使用过zipArchive来进行文件的加密,方法是先将文件生成一个带密码的自定义后缀的压缩包,然后读取的时候使用密码进行解压缩,文件读入内存后删除解压后的文件。测试后感觉速度还行,但是这个过程有点繁琐,而且可能不太适合较大的文件,于是考虑换用其它方式进行资源的加密。
今天要分享的是基于RNCryptor框架的AES加密方法,这个框架同时支持同步和异步读取加密文件,功能十分强大,而且提供了完整的展示用例和文档。下面给出下载地址:RNCryptor
首先我们来看看加密,我做了个Mac上的小工具来实现文件的加密。
功能很简单,就不多说了,以后可能会分享篇Mac开发入门的小文章,具体讲讲怎么做这样一个小工具。
下面这个方法是加密工具在读取文件后对数据进行加密,加了注释就不逐行说了:
这里生成的文件后缀.gwesley可以任意更换为自己喜欢的
接下来是读取数据然后进行解密
简单说说NSURL这个类中的属性,我们读取文件时拿到的是文件的url,生成文件是要传的是path字符串。
使用[url path]可以很简单获得path,两者打印出来的时候有一些小差异,举个例子
通过url可以拿到很多的属性,通过一小段代码把这些属性给打印出来,方便写代码的时候进行参考:
打印结果如下:
2012-12-14 16:23:53.858 AESEncryptor[2282:403] absoluteString :file://localhost/Users/zhaohaobo/Music/Track01.mp3
2012-12-14 16:23:53.859 AESEncryptor[2282:403] absoluteURL : file://localhost/Users/zhaohaobo/Music/Track01.mp3
2012-12-14 16:23:53.859 AESEncryptor[2282:403] baseURL : (null)
2012-12-14 16:23:53.859 AESEncryptor[2282:403] fragment : (null)
2012-12-14 16:23:53.859 AESEncryptor[2282:403] host : localhost
2012-12-14 16:23:53.859 AESEncryptor[2282:403] lastPathComponent : Track01.mp3
2012-12-14 16:23:53.860 AESEncryptor[2282:403] parameterString : (null)
2012-12-14 16:23:53.860 AESEncryptor[2282:403] password : (null)
2012-12-14 16:23:53.860 AESEncryptor[2282:403] path : /Users/zhaohaobo/Music/Track01.mp3
2012-12-14 16:23:53.860 AESEncryptor[2282:403] pathComponents : (
"/",
Users,
zhaohaobo,
Music,
"Track01.mp3"
)
之前使用过zipArchive来进行文件的加密,方法是先将文件生成一个带密码的自定义后缀的压缩包,然后读取的时候使用密码进行解压缩,文件读入内存后删除解压后的文件。测试后感觉速度还行,但是这个过程有点繁琐,而且可能不太适合较大的文件,于是考虑换用其它方式进行资源的加密。
今天要分享的是基于RNCryptor框架的AES加密方法,这个框架同时支持同步和异步读取加密文件,功能十分强大,而且提供了完整的展示用例和文档。下面给出下载地址:RNCryptor
首先我们来看看加密,我做了个Mac上的小工具来实现文件的加密。
功能很简单,就不多说了,以后可能会分享篇Mac开发入门的小文章,具体讲讲怎么做这样一个小工具。
下面这个方法是加密工具在读取文件后对数据进行加密,加了注释就不逐行说了:
这里生成的文件后缀.gwesley可以任意更换为自己喜欢的
接下来是读取数据然后进行解密
简单说说NSURL这个类中的属性,我们读取文件时拿到的是文件的url,生成文件是要传的是path字符串。
使用[url path]可以很简单获得path,两者打印出来的时候有一些小差异,举个例子
通过url可以拿到很多的属性,通过一小段代码把这些属性给打印出来,方便写代码的时候进行参考:
打印结果如下:
2012-12-14 16:23:53.858 AESEncryptor[2282:403] absoluteString :file://localhost/Users/zhaohaobo/Music/Track01.mp3
2012-12-14 16:23:53.859 AESEncryptor[2282:403] absoluteURL : file://localhost/Users/zhaohaobo/Music/Track01.mp3
2012-12-14 16:23:53.859 AESEncryptor[2282:403] baseURL : (null)
2012-12-14 16:23:53.859 AESEncryptor[2282:403] fragment : (null)
2012-12-14 16:23:53.859 AESEncryptor[2282:403] host : localhost
2012-12-14 16:23:53.859 AESEncryptor[2282:403] lastPathComponent : Track01.mp3
2012-12-14 16:23:53.860 AESEncryptor[2282:403] parameterString : (null)
2012-12-14 16:23:53.860 AESEncryptor[2282:403] password : (null)
2012-12-14 16:23:53.860 AESEncryptor[2282:403] path : /Users/zhaohaobo/Music/Track01.mp3
2012-12-14 16:23:53.860 AESEncryptor[2282:403] pathComponents : (
"/",
Users,
zhaohaobo,
Music,
"Track01.mp3"
)