當前位置:首頁 » 密碼管理 » cocos2dx圖片加密

cocos2dx圖片加密

發布時間: 2022-10-04 02:25:33

『壹』 cocos2dx openssl aes怎麼用

為一個基於密碼學的安全開發包,OpenSSL提供的功能相當強大和全面,囊括了主要的密碼演算法、常用的密鑰和證書封裝管理功能以及SSL協議,並提供了豐富的應用程序供測試或其它目的使用。
1.對稱加密演算法
OpenSSL一共提供了8種對稱加密演算法,其中7種是分組加密演算法,僅有的一種流加密演算法是RC4。這7種分組加密演算法分別是AES、DES、Blowfish、CAST、IDEA、RC2、RC5,都支持電子密碼本模式(ECB)、加密分組鏈接模式(CBC)、加密反饋模式(CFB)和輸出反饋模式(OFB)四種常用的分組密碼加密模式。其中,AES使用的加密反饋模式(CFB)和輸出反饋模式(OFB)分組長度是128位,其它演算法使用的則是64位。事實上,DES演算法裡面不僅僅是常用的DES演算法,還支持三個密鑰和兩個密鑰3DES演算法。
2.非對稱加密演算法
OpenSSL一共實現了4種非對稱加密演算法,包括DH演算法、RSA演算法、DSA演算法和橢圓曲線演算法(EC)。DH演算法一般用戶密鑰交換。RSA演算法既可以用於密鑰交換,也可以用於數字簽名,當然,如果你能夠忍受其緩慢的速度,那麼也可以用於數據加密。DSA演算法則一般只用於數字簽名。

『貳』 如何使用自帶的加密功能及在cocos2dx中的

http://www.cnblogs.com/cg-Yun/p/4081255.html

『叄』 cocos2dx中怎樣把texture嫖猵vr或者pvr

pvr格式的數據在IOS上直接交給顯卡渲染的,而cocos2dx 中的texture是直接交給顯卡渲染的,所以理論上將pvr格式的數據可以不進行任何數據的轉換就可以生成一張texture,事實上確實是這樣的。
一, 保存為pvr格式
要保存pvr文件,我們首先分析cocos2dx引擎中是怎樣解析pvr文件的。可以看到cocos2dx庫中的CCTexturePVR類提供了兩個方法來解析pvr格式圖片分別是unpackPVRv2Data、unpackPVRv3Data,兩個方法分別解析的是PVR的v2和v3版本。本文只分析v2版本:
bool CCTexturePVR::unpackPVRv2Data(unsigned char* data, unsigned int len)//data數據是直接從文件里讀出來沒有做任何處理的
{
bool success = false;
ccPVRv2TexHeader *header = NULL;
unsigned int flags, pvrTag;
unsigned int dataLength = 0, dataOffset = 0, dataSize = 0;
unsigned int blockSize = 0, widthBlocks = 0, heightBlocks = 0;
unsigned int width = 0, height = 0, bpp = 4;
unsigned char *bytes = NULL;
unsigned int formatFlags;

// 用header指向data數據的頭部(PVR v2格式的頭部固定是52個位元組,也就是data的前52個位元組的數據,data剩下的數據就是生成texture的數據了)
header = (ccPVRv2TexHeader *)data;

// 這是頭部的一個標識值為 "PVR!" 佔4位元組
pvrTag = CC_SWAP_INT32_LITTLE_TO_HOST(header->pvrTag);

if (gPVRTexIdentifier[0] != (char)(((pvrTag >> 0) & 0xff)) ||
gPVRTexIdentifier[1] != (char)(((pvrTag >> 8) & 0xff)) ||
gPVRTexIdentifier[2] != (char)(((pvrTag >> 16) & 0xff)) ||
gPVRTexIdentifier[3] != (char)(((pvrTag >> 24) & 0xff)))
{
return false;
}

CCConfiguration *configuration = CCConfiguration::sharedConfiguration();

flags = CC_SWAP_INT32_LITTLE_TO_HOST(header->flags);
formatFlags = flags & PVR_TEXTURE_FLAG_TYPE_MASK;
bool flipped = (flags & kPVR2TextureFlagVerticalFlip) ? true : false;
if (flipped)
{
CCLOG("cocos2d: WARNING: Image is flipped. Regenerate it using PVRTexTool");
}

if (! configuration->supportsNPOT() &&
(header->width != ccNextPOT(header->width) || header->height != ccNextPOT(header->height)))
{
CCLOG("cocos2d: ERROR: Loading an NPOT texture (%dx%d) but is not supported on this device", header->width, header->height);
return false;
}

unsigned int pvr2TableElements = PVR2_MAX_TABLE_ELEMENTS;
if (! CCConfiguration::sharedConfiguration()->supportsPVRTC())
{
pvr2TableElements = 9;
}

for (unsigned int i = 0; i < pvr2TableElements; i++)
{
//Does image format in table fits to the one parsed from header?
if (v2_pixel_formathash[i].pixelFormat == formatFlags)
{
m_pPixelFormatInfo = v2_pixel_formathash[i].pixelFormatInfo;

//Reset num of mipmaps
m_uNumberOfMipmaps = 0;

//Get size of mipmap
m_uWidth = width = CC_SWAP_INT32_LITTLE_TO_HOST(header->width);
m_uHeight = height = CC_SWAP_INT32_LITTLE_TO_HOST(header->height);

//Do we use alpha ?
if (CC_SWAP_INT32_LITTLE_TO_HOST(header->bitmaskAlpha))
{
m_bHasAlpha = true;
}
else
{
m_bHasAlpha = false;
}

//Get ptr to where data starts..
dataLength = CC_SWAP_INT32_LITTLE_TO_HOST(header->dataLength);

//跳過頭部,bytes直接指向了圖片數據部分
bytes = ((unsigned char *)data) + sizeof(ccPVRv2TexHeader);
m_eFormat = m_pPixelFormatInfo->ccPixelFormat;
bpp = m_pPixelFormatInfo->bpp;

// Calculate the data size for each texture level and respect the minimum number of blocks
while (dataOffset < dataLength)
{
switch (formatFlags) {
case kPVR2TexturePixelFormat_PVRTC_2BPP_RGBA:
blockSize = 8 * 4; // Pixel by pixel block size for 2bpp
widthBlocks = width / 8;
heightBlocks = height / 4;
break;
case kPVR2TexturePixelFormat_PVRTC_4BPP_RGBA:
blockSize = 4 * 4; // Pixel by pixel block size for 4bpp
widthBlocks = width / 4;
heightBlocks = height / 4;
break;
case kPVR2TexturePixelFormat_BGRA_8888:
if (CCConfiguration::sharedConfiguration()->supportsBGRA8888() == false)
{
CCLOG("cocos2d: TexturePVR. BGRA8888 not supported on this device");
return false;
}
default:
blockSize = 1;
widthBlocks = width;
heightBlocks = height;
break;
}

// Clamp to minimum number of blocks
if (widthBlocks < 2)
{
widthBlocks = 2;
}
if (heightBlocks < 2)
{
heightBlocks = 2;
}

dataSize = widthBlocks * heightBlocks * ((blockSize * bpp) / 8);
unsigned int packetLength = (dataLength - dataOffset);
packetLength = packetLength > dataSize ? dataSize : packetLength;

// bytes指向的是data,而data是直接從文件裡面讀出來的數據,m_asMipmaps則是用來生成texture的數據,
// 所以這里可以得出結論,pvr的圖片數據到texture不需要經過任何轉換,
// 也就是說pvr格式的數據可以不進行任何數據的轉換就可以生成一張texture
m_asMipmaps[m_uNumberOfMipmaps].address = bytes + dataOffset;
m_asMipmaps[m_uNumberOfMipmaps].len = packetLength;
m_uNumberOfMipmaps++;

//Check that we didn"t overflow
CCAssert(m_uNumberOfMipmaps < CC_PVRMIPMAP_MAX,
"TexturePVR: Maximum number of mipmaps reached. Increase the CC_PVRMIPMAP_MAX value");

dataOffset += packetLength;

//Update width and height to the next lower power of two
width = MAX(width >> 1, 1);
height = MAX(height >> 1, 1);
}

//Mark pass as success
success = true;
break;
}


通過上面的分析,我們知道了要把texture保存成pvr格式的文件只需為這樣texture添加一個頭部即可。關於pvr頭部在CCTexturePVR.cpp中我們可以看到 _PVRTexHeader 這個結構體,這個結構體就是PVR的頭部格式,現在要做的工作就是分析出_PVRTexHeader的成員的含義。這個可以參考imageination關於pvr的文檔,需要提醒的是要注意版本差別。

『肆』 我想用cocos2dx學習開發安卓游戲,請問要學習什麼基礎語言,從哪個方面著手

從一個最簡單的例子著手。

不知道朋友什麼基礎,安卓開發,JAVA是必備知識,一定要學的。C++務必要懂,因為
cocos2dx是C++實現的。而且cocos2dx中的API如特效,地圖,移動,渲染其風格都帶有強烈的winC++ API風格。所以不懂C++肯定無法成為一個優秀的游戲開發者。
給朋友的建議,先搭一個android下cocos2dx的運行環境。隨意實現一個簡單圖片的移動。我的同事們都選擇從小雞吃米開始的。例子網上有很多,朋友可以找找看。接下來肯定是要詳細研究cocos2dx的設計思想,消息機制。靠自己一步步去實踐了。祝成功。

『伍』 cocos2dx 怎麼加密xml

把整個文件按位元組讀取加密,也可以直接讀取字元加密。使用的過程與加密過程相反就ok了。
當然你也可以對xml中的數據加密,不加密中間的標簽。
加密的演算法也有很多,比如AES,MD5,DES,3DES.............

『陸』 cocos2dx 用luajit 加密腳本 會被反編譯

1、新建一個名為1.lua的文件,裡面只有一句話print("Hello Lua"),新建一個空的out.lua腳本文件
2、開始--運行--cmd
3、luac -o out.lua 1.lua
註: luac -o [編譯後腳本名] [腳本名],必要時帶上腳本路徑,如:

回車之後,再打開out.lua就可以看到編譯好的位元組碼了

然後實驗一下,執行這個位元組碼腳本,可以看到lua原生的解釋器可以直接解析luac編譯出來的bytecode腳本,很方便!

『柒』 cocos2dx 3.3 上層多點觸摸怎麼設置不穿透到底層

最土的方法就是在你當前層的最底部放一張透明的圖片,並把這張圖片設置為可交互。
按照官方的方法來設置不穿透感覺好麻煩,就直接用這個土方法。效果很不錯。

『捌』 扒資源是什麼意思

在網路上通過某種工具或者技術手段取得想要的內容。
下面是扒資源的方法:
1 .下載apk包,重命名為.zip,然後解壓縮,在/assets 目錄下,一般有一個res子目錄,打開這個目錄,裡面可能就有想要的資源。
2 .有些小游戲如棋牌類游戲,大部分是支持下載更新的,這部分游戲只有在進入游戲更新之後,資源才是完整的。這個時候我們要用到一個叫做藍疊(Bluestack)的模擬器(網路可下載): 首先把游戲安裝包拖到模擬器裡面安裝好;然後,在模擬器上運行游戲,等待熱更新完畢;接著,模擬器上點擊:我的應用->RE.管理器,點擊進入/data/data目錄,下面有一堆的com.aaa.bbb 或者 org/aaa.bbb,一般來說aaa表示游戲公司名,bbb表示游戲產品名。 比如掌上大贏家的目錄即為:/data/data/com.zsdyj.zsdyj。 找到對應的目錄,打開files/upgrade/o,找到裡面熱更新的文件。 游標移動到需要拷貝的文件上面,按住滑鼠左鍵,到/mnt/sdcards/windows/Document目錄下,如果文件比較大的話,的時間可能比較久。 耐心等待完成後,關閉藍疊模擬器。 windows系統上,打開我的文檔,就可以找到出來的文件了。
注意:如果在/data/data/下面沒找到,可以到/data/user/0目錄下面找找看。
3.如果資源文件是加密的,就要分析cocos2dx的lib文件,通過反匯編看其是如何加密資源的,不過這已經超出了本篇所述范圍。

熱點內容
主播網站源碼 發布:2025-05-15 02:50:56 瀏覽:167
中文編程語言有哪些 發布:2025-05-15 02:48:59 瀏覽:535
配置中心應急流程有哪些 發布:2025-05-15 02:37:31 瀏覽:669
php宏定義 發布:2025-05-15 02:32:54 瀏覽:270
咸魚支付密碼哪裡改 發布:2025-05-15 02:32:53 瀏覽:520
存儲機箱 發布:2025-05-15 02:31:31 瀏覽:836
編程很累嗎 發布:2025-05-15 02:29:25 瀏覽:552
疫情期間訪問國外網路 發布:2025-05-15 02:24:24 瀏覽:247
我的世界網易版游戲伺服器 發布:2025-05-15 02:23:46 瀏覽:221
全球編程網站 發布:2025-05-15 02:22:55 瀏覽:334