1. 程式人生 > >iOS_加密保護1_圖片資源

iOS_加密保護1_圖片資源

由於版權、防盜用、防山寨的需要

ipa的bundle中的圖片需要進行加密,

使用者安裝app時,bundle中的圖片是進行加密後的圖片

具體加密思路如下:

1、將要加密的圖片全部放到桌面上的一個資料夾內

2、新建一個Mac 命令列專案,對該資料夾內的所有圖片進行加密,具體如下

3、讀取原始圖片的data

4、對前1000位進行異或處理

5、使用GTMBase64編碼data,下載地址

6、將加密後的data,寫到資料夾,這些圖片,就是要拖到bundle裡面的圖片

具體解密思路如下:

1、使用圖片時,先從bundle讀取到圖片的data

2、使用GTMBase64解碼data

3、對前1000位進行異或處理

4、根據data 生成UIImage

5、顯示到UIImageView上

命令列專案:

1、匯入GTMBase64.h 、GTMBase64.m、GTMDefines.h

2、刪除autorelease或新增

-fno-objc-arc
3、將所有的原始圖片放到  /Users/beyond/Desktop/tmp_tai_pic

4、獲取所有該資料夾下的圖片,進行遍歷

//
//  main.m
//  encode
//
//  Created by beyond on 16/4/2.
//  Copyright (c) 2016年 beyond. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "GTMBase64.h"
#import "GTMDefines.h"



#define kEncodeKeyLength (21)
static char arrayForEncode[kEncodeKeyLength] = "beyond+2016+xsism.com";


int main(int argc, const char * argv[]) {
    @autoreleasepool {
        // insert code here...
        NSLog(@"Hello, World!");
        
        NSString *picFolderPath = @"/Users/beyond/Desktop/tmp_tai_pic";
        NSArray *shortPicNameArr = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:picFolderPath error:nil];
        NSLog(@"arr:%@",shortPicNameArr);
        
        for (NSString *shortPicName in shortPicNameArr) {
            // /Users/beyond/Desktop/tmp_tai_pic/9.png
            NSString *fullPicPath = [picFolderPath stringByAppendingPathComponent:shortPicName];
            NSLog(@"fullPicPath:%@",fullPicPath);
            // 讀原始資料
            NSData *imageDataOrigin = [NSData dataWithContentsOfFile:fullPicPath];
            
            // 對前1000位進行異或處理
            unsigned char * cByte = (unsigned char*)[imageDataOrigin bytes];
            for (int index = 0; (index < [imageDataOrigin length]) && (index < kEncodeKeyLength); index++, cByte++)
            {
                *cByte = (*cByte) ^ arrayForEncode[index];
            }
            
            //對NSData進行base64編碼
            NSData *imageDataEncode = [GTMBase64 encodeData:imageDataOrigin];
            
            
            
            // /Users/beyond/Desktop/tmp_tai_pic/encode_9.png
            NSString *newShortPicName = [NSString stringWithFormat:@"encode_%@",shortPicName];
            NSString *newFullPicPath = [picFolderPath stringByAppendingPathComponent:newShortPicName];
            NSLog(@"fullPicPath:%@",fullPicPath);
            
            [imageDataEncode writeToFile:newFullPicPath atomically:YES];
            
            
            
        }
        
        
    }
    return 0;
}



iOS專案:

1、刪除專案bundle中原來的圖片(或不加入target中),將上面加密過的圖片加入到工程中

2、在使用到UIImage的方法中,註釋掉原來的方法

// 未進行加密前,使用的是 1.gif
//    cell.xib_imgView.image = [UIImage imageNamed:imgName];

3、根據新的圖片encode_1.gif讀取data

4、使用GTMBase64解碼data

5、對前1000位進行異或處理

6、根據解密後的data 生成UIImage,顯示到UIImageView上

// 進行了加密後,根據data生成圖片
    NSString *newImgName = [NSString stringWithFormat:@"encode_%@",imgName];
    NSString *filePath = [[NSBundle mainBundle]pathForResource:newImgName ofType:nil];
    // 讀取被加密檔案對應的資料
    NSData *dataEncoded = [NSData dataWithContentsOfFile:filePath];
    // 對NSData進行base64解碼
    NSData *dataDecode = [GTMBase64 decodeData:dataEncoded];
    
    
    // 對前1000位進行異或處理
    unsigned char * cByte = (unsigned char*)[dataDecode bytes];
    for (int index = 0; (index < [dataDecode length]) && (index < kEncodeKeyLength); index++, cByte++)
    {
        *cByte = (*cByte) ^ arrayForEncode[index];
    }
    
    // 根據解密後的Data生成Image
    cell.xib_imgView.image = [UIImage imageWithData:dataDecode];


對plist加密同上,解密方法如下:

NSString *filePath = @"/Users/beyond/Desktop/tmp_encode/plist/encode_k_Riyu_Alpha_List.plist";
         // 進行了加密後,根據data生成圖片
         // 讀取被加密檔案對應的資料
         NSData *dataEncoded = [NSData dataWithContentsOfFile:filePath];
         // 對NSData進行base64解碼
         NSData *dataDecode = [GTMBase64 decodeData:dataEncoded];
         
         
         // 對前1000位進行異或處理
         unsigned char * cByte = (unsigned char*)[dataDecode bytes];
         for (int index = 0; (index < [dataDecode length]) && (index < kEncodeKeyLength); index++, cByte++)
         {
         *cByte = (*cByte) ^ arrayForEncode[index];
         }
         
         // 根據解密後的Data生成Image
        ;
        NSString *error;
        NSPropertyListFormat format;
        NSArray* plist = [NSPropertyListSerialization propertyListFromData:dataDecode
                                                          mutabilityOption:NSPropertyListImmutable
                                                                    format:&format
                                                          errorDescription:&error];
        NSLog( @"plist arr is:%@", plist );



相關推薦

iOS_加密保護1_圖片資源

由於版權、防盜用、防山寨的需要 ipa的bundle中的圖片需要進行加密, 使用者安裝app時,bundle中的圖片是進行加密後的圖片 具體加密思路如下: 1、將要加密的圖片全部放到桌面上的一個資料夾內 2、新建一個Mac 命令列專案,對該資料夾內的所有圖片進行加密,具

用異或法簡單加密Android的圖片資源

思路:本地用異或加密好圖片---放入Android的assets資料夾下---在程式裡用異或解密。 都知道解壓APK檔案能拿到程式的圖片資源,為了保護圖片資源不被盜用,可採用簡單異或的方法對圖片進行加密,這樣即使解壓APK檔案,圖片也無法開啟。 第一步,通過建立一個JA

UE4程序及資源加密保護方案

加密UnrealEngine4外殼加密 . Virbox Protector解決代碼反匯編和反dump代碼,解決軟件盜版與算法抄襲.虛幻引擎4是由遊戲開發者為開發遊戲而制作的、完整的遊戲開發工具套件。從二維的移動平臺遊戲到主機平臺的大作,虛幻引擎是一個純C++引擎,專為高性能而設計。它先進CPU/GPU性能分

(轉)quick-cocos2d-x圖片資源加密(續)

player AD sign 信息 text 語句 osc osi pan 摘要: 對在quick-cocos2d-x上實現的資源加密方法的補充 前篇: quick-cocos2d-x圖片資源加密 讓quick-cocos2d-x支持加密的plist文件 通過前篇的

(轉)quick-cocos2d-x圖片資源加密

做了 zip ali tran -o AD nor lena s2d 摘要: 在quick-cocos2d-x上實現的一種圖片資源加密的方法,現已經加入官方最新版本之中 ###quick-x已經支持用XXTEA加密方式對腳本文件進行加密。在此基礎上,自己做了一些工作,對

針對cocos2d圖片資源自定義加密的解密

http://zhaoxiaodan.com/cocos2dx/%E9%92%88%E5%AF%B9cocos2d%E5%9B%BE%E7%89%87%E8%B5%84%E6%BA%90%E8%87%AA%E5%AE%9A%E4%B9%89%E5%8A%A0%E5%AF%8

cocos2dx 圖片資源加密

圖片加密使用xxtea來加密,加密祕鑰自己定,思路就是自己使用程式碼首先將圖片加密,在程式中使用的時候,在載入圖片資源處再將資源解密 加密程式碼如下: 首先要載入標頭檔案 2、將圖片加密 bool jiamiImg(string inputFileName,string

圖片資源加密,Lua檔案加密

轉自:http://www.cnblogs.com/zisou/p/cocos2dxJQ-67.html 遊戲開發中常遇到資源保護的問題。 目前遊戲開發中常加密的檔案型別有:圖片,Lua檔案,音訊等檔案,而其實加密也是一把雙刃劍。 需要安全那就得耗費一定的資源去實

AES加密解密圖片資源

AES.java import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; public class AES

cocos2dx 3.0 使用TexturePacker對圖片資源加密

       遊戲開發過程中要涉及到大量的圖片,使用TexturePacker可以把小圖合成大圖。這是我們使用最多的功能,但是TexturePacker還帶有對圖片加密的功能。之前還是對加密不慎瞭解,今天在網上搜了下然後自己親手寫了,所以寫下來分享下。 把圖片匯入到Text

ios開發 圖片資源的簡單加密(一)

實現最簡單的圖片加密和解密 注意:使用加密圖片,勢必會影響app的效能 整體思路: 生成加密檔案:在mac端 1.將image.png的檔案轉成NSData 2.把NSData檔案與密碼檔案sn(NSData)拼接 3.把拼接好的NSData檔案儲存為以image.d

加密】Cocos2d-x PNG圖片資源加密

實現原理     如果你對實現原理並不感興趣,只是想直接使用的話可以跳過這節。首先我假設讀者已經清楚PNG影象檔案結構了,如果沒有的話這裡建議可以看看《揭祕資料解密的關鍵技術》第5章,這章裡面專門對PNG影象格式進行了介紹。或者看看《PNG檔案格式詳解》這篇

quick-cocos2d-x 圖片資源加密

quick-x已經支援用XXTEA加密方式對指令碼檔案進行加密。在此基礎上,自己做了一些工作,對圖片資源進行了XXTEA加密,現分享給大家。 (2014.5.30加註:quick-x的2.2.3版本已經集成了我遞交的pr,現在官方版本程式碼與文章中類似) 首先我們要有

Cocos2d-lua 3.10 圖片資源加密

在遊戲釋出之前,最好將圖片加密,為apk/ipa加一層保護(雖然可能沒用),涉及兩個問題: 1. 如何對圖片加密 2. 如何讀取加密後的圖片 下面詳細說明。 對圖片加密 Quick-3.3提供了pack_files.sh可以實現對圖片加密,基本原理

如何通過 WebP 自適應方案減少圖片資源大小

ont 圖片文件 display zip 副本 org 占比 會有 xhtml 前言 我們知道,理想的網頁應該在 1 秒內打開,而在頁面的整體大小中,圖片往往是所占比例最大的一部分(大約占到 60% 以上,更多了解請點擊),也可以參照如下圖所示。優化圖片不僅可以加快頁面顯示

關於矢量圖片資源向後兼容:CompatVectorFromResourcesEnabled標誌的使用

圖片資源 quest source things enable release have ive stack StackOverflow上摘抄的: some things have changed since I asked this question so I will

圖片資源

ati iconfont onf target nbsp lan icon 服務 con 免費圖片網站 阿裏矢量圖標庫 . pixabay pexels gratisography.com (這個沒有連接,最近他們服務器出問題了)圖片資源

紅線科技強勢來襲,數據安全加密保護解決方案

減少 功能 以及 安全 安全措施 實的 安全防護 細粒度 隱私 在互聯網迅猛發展的時代,信息泄露事件逐年成倍增長,信息安全是如今社會人們關註的焦點。近年,互聯網、大數據、雲計算、人工智能是發展熱潮,數據安全行業必須結合新趨勢,才能阻斷遏制數據安全面臨的新威脅。因此,一個全新

Unity3d-WWW實現圖片資源顯示以及保存和本地加載

editor call clas amp private out .text sset bytes 本文固定連接:http://blog.csdn.net/u013108312/article/details/52712844 WWW實現圖片資源顯示以及保存和本地加

如何下載網絡圖片資源

httpurl net nco tput body rgs ati 下載 ring 在Java網絡編程中,經常會用到下載網絡資源。我們在這裏演示如何下載一張網絡圖片。這裏主要用到了Java中的HttpURLConnection類。請看代碼:import java.io.Fi