cocos2d-x 圖片xxtea加密

圖片加密
1.導(dǎo)入相應(yīng)頭文件


image

2.加密方法
HelloWorld.h文件
bool picJm(std::string inputFileName,std::string outFileName);
.cpp文件

//導(dǎo)入相應(yīng)庫
#include "xxtea/xxtea.h"
#include <unistd.h>
#include <stdio.h>
#include <dirent.h>
#include <sys/stat.h>
//方法實(shí)現(xiàn)
bool HelloWorld::picJm(string inputFileName,string outFileName){
    string fileName=FileUtils::getInstance()->fullPathForFilename(inputFileName);
    if(fileName.empty())
    {
        return  false;
    }

    Data fileData=FileUtils::getInstance()->getDataFromFile(fileName);
    xxtea_long ret_len;
    unsigned char key[100]="miyao";
    unsigned char* ret_data= xxtea_encrypt(fileData.getBytes(), (xxtea_long)fileData.getSize(),key, (xxtea_long)strlen("miyao"), &ret_len);
    if (ret_data==NULL) {
        return false;
    }
    FILE*fp=fopen(outFileName.c_str(), "wb+");
    if (fp==NULL) {
        return false;
    }
    fwrite(ret_data, ret_len, 1, fp);
    fflush(fp);
    fclose(fp);
    CC_SAFE_DELETE(ret_data);
    
    return true;
 
}

//方法調(diào)用
    std::string outFileName="/Users/qzp/Desktop/Cocos2d/MyGame/Resources/test.png";

    bool jiamiRet=picJm("dw.png",outFileName.c_str());
    if (jiamiRet) {
        printf("-----加密成功success-----\n");
    }
    else
    {
        printf("------加密失敗false------\n");
    }




解密
cocos2d/cocos/platform/CCImage.cpp 文件
修改

bool Image::initWithImageFile(const std::string& path)
{
    bool ret = false;
    _filePath = FileUtils::getInstance()->fullPathForFilename(path);
    ssize_t len;
    unsigned char* data = FileUtils::getInstance()->getFileData(_filePath, "rb", &len);
    xxtea_long ret_len;
    unsigned char key[100] = "miyao";
    unsigned char* ret_data = xxtea_decrypt(data, (xxtea_long)len, key, strlen("miyao"), &ret_len);
    Data result;
    result.fastSet(ret_data, ret_len);
    
    if (!result.isNull())
    {
        ret = initWithImageData(result.getBytes(), result.getSize());
    }
    return ret;
}


bool Image::initWithImageFileThreadSafe(const std::string& fullpath)
{

    bool ret = false;
    _filePath = fullpath;
    
    ssize_t len;
    unsigned char* data = FileUtils::getInstance()->getFileData(_filePath, "rb", &len);
    xxtea_long ret_len;
    unsigned char key[100] = "miyao";
    unsigned char* ret_data = xxtea_decrypt(data, (xxtea_long)len, key, strlen("miyao"), &ret_len);
    Data result;
    result.fastSet(ret_data, ret_len);
    
    if (!result.isNull())
    {
        ret = initWithImageData(result.getBytes(), result.getSize());
    }
    
    return ret;
}
擴(kuò)展----同時(shí)加密文件夾下所有圖片
//獲取指定路徑下所有文件名稱
std::vector<std::string> HelloWorld::getFilePathAtVec(std::string filePath) {
    std::vector<std::string> path_vec;
    const char* path = filePath.c_str();
    char *dir = (char*)malloc(filePath.size() + 1);
    sprintf(dir,  "%s", path);

    DIR *dp;
    struct dirent *entry;
    struct stat statbuf;
    int i=0;
    
    if((dp=opendir(dir))==NULL)
    {
        fprintf(stderr,"cannot open %s",dir);
        exit(1);
    }
    chdir(dir);
    
    while((entry=readdir(dp))!=NULL&&i<255)
    {
        stat(entry->d_name,&statbuf);
        if(!S_ISREG(statbuf.st_mode))
            continue;
        path_vec.push_back(StringUtils::format("%s",entry->d_name));
    }
    
    return path_vec;  
}



//----------循環(huán)調(diào)用--------------
   //遍歷的文件夾目錄
    string oldFileName = "/Users/qzp/Desktop/Cocos2d/WillJm_pic";
    std::vector<std::string> temps = getFilePathAtVec(oldFileName);

    //輸出目錄
    std::string outFileName="/Users/qzp/Desktop/Cocos2d/qzp2018_jm_pic";
    for (int i = 0; i < temps.size(); i++) {
        string name = StringUtils::format("jm_%s", temps.at(i).c_str());
        string oldPicPath = oldFileName + "/" + temps.at(i); //原始圖片路徑
        string newPicPath = outFileName + "/" + name; //加密后路徑
        picJm(oldPicPath, newPicPath);

    }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末调鲸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子威恼,更是在濱河造成了極大的恐慌钾虐,老刑警劉巖儿捧,帶你破解...
    沈念sama閱讀 216,843評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件佩谣,死亡現(xiàn)場離奇詭異第步,居然都是意外死亡鸳玩,警方通過查閱死者的電腦和手機(jī)虏劲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評論 3 392
  • 文/潘曉璐 我一進(jìn)店門托酸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伙单,你說我怎么就攤上這事获高。” “怎么了吻育?”我有些...
    開封第一講書人閱讀 163,187評論 0 353
  • 文/不壞的土叔 我叫張陵念秧,是天一觀的道長。 經(jīng)常有香客問我布疼,道長摊趾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,264評論 1 292
  • 正文 為了忘掉前任游两,我火速辦了婚禮砾层,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贱案。我一直安慰自己肛炮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評論 6 390
  • 文/花漫 我一把揭開白布宝踪。 她就那樣靜靜地躺著侨糟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪瘩燥。 梳的紋絲不亂的頭發(fā)上秕重,一...
    開封第一講書人閱讀 51,231評論 1 299
  • 那天,我揣著相機(jī)與錄音厉膀,去河邊找鬼溶耘。 笑死二拐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凳兵。 我是一名探鬼主播百新,決...
    沈念sama閱讀 40,116評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼留荔!你這毒婦竟也來了吟孙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,945評論 0 275
  • 序言:老撾萬榮一對情侶失蹤聚蝶,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后藻治,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碘勉,經(jīng)...
    沈念sama閱讀 45,367評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評論 2 333
  • 正文 我和宋清朗相戀三年桩卵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了验靡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡雏节,死狀恐怖胜嗓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钩乍,我是刑警寧澤辞州,帶...
    沈念sama閱讀 35,458評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站寥粹,受9級特大地震影響变过,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜涝涤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評論 3 327
  • 文/蒙蒙 一媚狰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧阔拳,春花似錦崭孤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至罪针,卻和暖如春彭羹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泪酱。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評論 1 269
  • 我被黑心中介騙來泰國打工派殷, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留还最,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,797評論 2 369
  • 正文 我出身青樓毡惜,卻偏偏與公主長得像拓轻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子经伙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評論 2 354

推薦閱讀更多精彩內(nèi)容