ios開發 圖片資源的簡單加密(一)
阿新 • • 發佈:2019-01-27
實現最簡單的圖片加密和解密
注意:使用加密圖片,勢必會影響app的效能
整體思路:
生成加密檔案:在mac端
1.將image.png的檔案轉成NSData
2.把NSData檔案與密碼檔案sn(NSData)拼接
3.把拼接好的NSData檔案儲存為以image.data為名字的資料檔案.
解析加密檔案:在mac或ios端
1.獲取密碼檔案sn
2.讀取image.data,轉成NSData
3.刪除NSData中的密碼檔案sn的內容
4.儲存或使用刪除密碼檔案後的NSData
程式碼詳情:
生成加密檔案image.data
//檔案管理器 NSFileManager *manager = [NSFileManager defaultManager]; //獲取沙盒內各檔案的名稱 陣列中存的全是字串 中文路徑需要轉碼 #warning ---TODO 中文路徑需要轉碼 //獲取資料夾中所有圖片名 NSArray *array = [manager contentsOfDirectoryAtPath:self.importLabel.stringValue error:nil]; for (int i = 0; i < array.count; i ++) { //生成密碼檔案 NSMutableData *sn1 = [self.snLabel.stringValue dataUsingEncoding:NSUTF8StringEncoding]; NSString *docName = array[i]; //各圖片名 NSString *importPath = [NSString stringWithFormat:@"%@/%@",self.importLabel.stringValue,docName ]; NSMutableData *imageData = [NSMutableData dataWithContentsOfFile: importPath]; //將密碼與圖片檔案拼接 [sn1 appendData: imageData]; //儲存路徑 NSString *savePath = [self getSavePath:docName]; //寫入 [sn1 writeToFile:savePath atomically:YES]; }
解析image.data
寫成UIImage的一個分類,方便獲取圖片
/** * 從加密圖片獲取圖片 * * @param imageName 圖片名字 * * @return 圖片 */ +(UIImage*)imageInSnWithName:(NSString*)imageName{ //獲取加密檔案路徑 NSString *imDataStr = [[NSBundle mainBundle] pathForResource:imageName ofType:nil]; //加密檔案轉成NSData NSData *imageData = [NSData dataWithContentsOfFile: imDataStr ]; //密碼檔案 NSData *sn = [ SN dataUsingEncoding:NSUTF8StringEncoding]; NSUInteger pre = sn.length; NSUInteger total = imageData.length; NSRange range = {pre , total-pre}; //除去加密檔案 NSData *imData = [imageData subdataWithRange:range]; //生成可使用的圖片資源 UIImage *image = [[UIImage alloc]initWithData:imData]; return image; }
原始碼下載:
ps : ios端原始碼中的加密圖片密碼為 123