前因
针对于当前app市场来说,很多素材都是盗用其他成功app的素材.这就推动了app素材的加密.所以在一个星期之前老大让我去整个素材加密.一开始还真让我伤脑.因为上网一搜,都没有关于这方面的只是.只好自己一个个去看技术网站,博客,贴吧等等.最好让我恍然一悟,如果将图片转换成字节流,然后对字节流修改加密.在转换成文件,不就加密成功.说干就干,然后开启了自己的素材加密道路.
素材加密的步骤
1,将图片转换字节流.
我们通过系统自带的ImageWithData的方法可以获取我们需要的字节流.但是没有方法可以对字节流直接加密啊.所以通过自己多次测试和查找资料,最方便的是,讲字节流通过Base64的方式转成字符串,这就好办了.可以按照我们的想法去实现了.
NSString *hexString = [data base64EncodedStringWithOptions:NSDataBase64Encoding64CharacterLineLength];
2.加密
获取到了我们需要的字符串,我们进行切割,把前面一部分的字符串进行加密,当然这个加密要可逆哦.不然你加密了不能解密也是白搭.对于该怎么加密,就按照你们公司的要求自己设计了.我们公司的就不透露了.
3获取加密的文件
前段字符串加密了之后,就拼接好整个字符串,然后将字符串转换成字节流,写入NSDocumentDirectory里面的文件夹了就等到了你需要的加密文件了.
NSData *data = [[NSData alloc]initWithBase64EncodedString:hexString options:NSDataBase64DecodingIgnoreUnknownCharacters];
素材解密
素材解密就简单了.只需要逆向执行,把你的加密文件的加密字符串转换回去又得到了我们需要的图片!
素材解密了我们不能每次提取图片都解密一次.我们可以加入NSCache,这样我们的性能又提起来了.
其实加密和解密都很简单,重点是我们的思路要对,不然就找不到北了.以上的方法在性能上以imageName的方法相比是更快的.但是于imageContentFile相比是差6倍左右的.这个就给大家去思考了.如果之后我有比较好的方法会给大家分享出来的.