日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

iOS动态部署之RSA加密传输Patch补丁

發布時間:2025/3/19 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 iOS动态部署之RSA加密传输Patch补丁 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

概要:這一篇博客主要說明下iOS客戶端動態部署方案中,patch(補丁)是如何比較安全的加載到客戶端中。

在整個過程中,需要使用RSA來加密(你可以選擇其它的非對稱加密算法),MD5來做校驗(同樣,你也可以選擇其他的算法)。
iOS客戶端中RSA加解密的例子不是很多,我在網絡上尋找了一些開源代碼,發現揭秘算法有誤。我就在其基礎上做了修改,修復了問題。并且我重新整理了一份,并且支持cocoapod接入,下面是github地址。以后我還會詳細的說明RSA加密的原理,以及github上代碼實現。

https://github.com/qianhongqiang/RSAEncryptor

生成RSA公私鑰文件

RSA公私鑰聲稱可以參考下面的文章,照著一步步做就是了。其中,公私鑰長度建議1024位以上,我自己則采用了2048位的。

http://blog.csdn.net/yi_zz32/article/details/50097325

使用.der后綴的公鑰和.p12為后綴的私鑰作為秘鑰對,對尚未加密的patcher進行加密。

MD5校驗

因為網絡傳輸存在不穩定性,倘若傳輸中某個字節出現了錯誤,那么加載patch后肯定會運行失敗,在這種情況下,我們是不能加載patcher的。游戲游戲在下載patch后,都會提示正在進行MD5校驗(或其他算法校驗),都是這個道理。MD5的功能只是單純的進行校驗。我直接把使用的代碼貼出來了,比較短。需要倒入庫#import <CommonCrypto/CommonDigest.h>,你可以直接拷貝。

+(NSString*)fileMD5:(NSString*)path {NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:path];if( handle== nil ) return @"ERROR GETTING FILE MD5"; // file didnt existCC_MD5_CTX md5;CC_MD5_Init(&md5);BOOL done = NO;while(!done){NSData* fileData = [handle readDataOfLength: 256 ];CC_MD5_Update(&md5, [fileData bytes], (uint32_t)[fileData length]);if( [fileData length] == 0 ) done = YES;}unsigned char digest[CC_MD5_DIGEST_LENGTH];CC_MD5_Final(digest, &md5);NSString* s = [NSString stringWithFormat: @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",digest[0], digest[1],digest[2], digest[3],digest[4], digest[5],digest[6], digest[7],digest[8], digest[9],digest[10], digest[11],digest[12], digest[13],digest[14], digest[15]];return s; }

生成加密后的Patcher

目前來說,我緊緊打算用patche做bug緊急修復的用途,沒有打算直接使用它發布新功能,所以patcher中緊緊包涵腳本的文本,不包含圖片等文件。
自己定義了流的生成與解析過程:

寫入md5值的長度,我這里用1個字節表示,已經足夠的長度來表示了。

NSMutableData *finalData = [NSMutableData data];//所有的data最后都寫入這個data中NSString *fileMD5 = [MD5 fileMD5:dataFileName]; NSData *md5Data = [fileMD5 dataUsingEncoding:NSUTF8StringEncoding]; NSUInteger length = [md5Data length];unsigned char bit8 = length & 0x000000FF;//提取低八位 [finalData appendBytes:&bit8 length:1]; [finalData appendData:md5Data];

最后在把RSA加密后的data拼接到finalData中,在把data輸出到文件。這樣patcher就搞定了。

解密patcher

patcher下載客戶端后,就需要對patcher進行解析。解析就逆著patcher的生成過程就可以

NSData *decryptFileData = [NSData dataWithContentsOfFile:encryptFileName]; //獲取文件的data//讀取文件的第一個字節, int8_t v1; [decryptFileData getBytes:&v1 range:NSMakeRange(0,1)]; //查看MD5值的長度 int getMG5Length = (int32_t)v1 & 0x0ff; //查看md5信息 NSData *getmd5Data = [decryptFileData subdataWithRange:NSMakeRange(1, getMG5Length)]; NSString *fileMD5s = [[NSString alloc] initWithData:getmd5Data encoding:NSUTF8StringEncoding]; //獲取真正的patcher文本的data NSData *contentData = [decryptFileData subdataWithRange:NSMakeRange(1+getMG5Length, decryptFileData.length - 1 -getMG5Length)];

該有的信息全部存在了,只需要將data轉成文本,再次md5跟校驗值比較,是否一致,一致的話,那么這個patcher就是正常的,可以加載。如果不正常的話,那么根據app需求,可以重新下載等等處理。

轉載于:https://www.cnblogs.com/qianhongqiang/p/5310480.html

總結

以上是生活随笔為你收集整理的iOS动态部署之RSA加密传输Patch补丁的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产婷婷色一区二区在线观看 | 18禁裸乳无遮挡啪啪无码免费 | 久久久久久久久免费 | 秋霞自拍 | 激烈的性高湖波多野结衣 | 亚洲一区二区三区蜜桃 | 亚洲AV无码一区二区三区蜜桃 | 久久久com | 绿帽h啪肉np辣文 | www.中文字幕av| 国产1区2区在线观看 | 欧美区亚洲区 | 国产精品白虎 | 少妇又色又紧又黄又刺激免费 | 日韩中文字幕免费观看 | 亚洲wwww| 亚洲我射| 色91av| 天天干视频在线观看 | 99精品乱码国产在线观看 | 一级黄色片网站 | 亚洲瑟瑟| 免费av动漫 | 亚洲国产精品自拍 | 色午夜视频 | 91麻豆精品国产91久久久久久久久 | 黄色小说图片视频 | 国产性猛交╳xxx乱大交一区 | 久久久99国产精品免费 | aa爱做片免费 | 国产免费无码一区二区 | av毛片大全| 啪啪无遮挡 | 色综合狠狠 | 欧美成人一二三区 | 九色论坛| 永久av在线免费观看 | 欧美在线视频免费播放 | 日韩久久不卡 | 春物催眠 | 亚欧毛片 | 动漫一区二区 | 国产免费高清av | 51精品国产人成在线观看 | 中文二区 | 日本黄色片免费 | 国产精品久久久久桃色tv | 国产成人精品一区二区三区免费 | 欧美日韩高清丝袜 | 超碰国产人人 | 色在线综合 | 另类小说一区二区 | aaaaa黄色片 天堂网在线观看 | 亚洲人xxx | 人人爽人人爽人人爽人人爽 | 青青草av在线播放 | 精品一区在线看 | 天堂av在线免费观看 | 国产精品51麻豆cm传媒 | 国产a视频 | 亚洲黄页网站 | 久久成人久久 | 樱桃av | 欧美日韩中文字幕在线 | 成人动漫在线播放 | 羞羞影院体验区 | 欧美肉大捧一进一出免费视频 | 噼里啪啦免费观看 | 校园春色av| 免费黄片毛片 | 一区二区视频在线播放 | 欧美爱爱视频 | 国产伦一区二区三区 | www.国产区| 免费色片 | 天天摸天天干 | 人人妻人人澡人人爽欧美一区 | 国产视频在线一区 | 亚洲大片精品 | 久久精品国产电影 | 中日韩精品一区二区三区 | 亚洲精品乱码久久久久久麻豆不卡 | 国产成人日韩 | 欧洲中文字幕 | 久操视频免费在线观看 | 精品国产97 | 亚洲综合视频网 | 91精品国产自产在线观看 | 奇米影视盒 | 狠狠爱网站 | 手机免费看av | 粉嫩久久99精品久久久久久夜 | 久久久久国产一区二区三区潘金莲 | 亚洲国产欧美在线人成 | 国产精品视频久久久久久久 | 九九热re | a级性生活视频 | 精品黑人一区二区三区观看时间 | 午夜aaa片一区二区专区 |