iOS HmacSHA1加密 和 MD5 Base64加密 --iOS開發系列---項目中成長的知識五


項目中開發中需要對一些數據進行加密后和服務器驗證是否是我們客戶端發出的請求!

方案是服務器定的,使用HmacSHA1加密和MD5 Base64加密

加密過程比較復雜

1.獲取格林威治時間

2.用base64編碼對請求數據內容進行MD5值計算

3.設置請求格式

4.設置鑒權信息,需要對上面的3個內容以及請求的鏈接 進行HMacSHA1再次進行加密

 

加密過后把上面4步獲得的值加入到http的請求頭中,一並發送給服務器,服務器經過驗證后,才返回給我們我們想要的信息

 

下面貼代碼說明我們使用的兩個加密

首先是Base 64 MD5加密

 1 //BASE 64 MD5加密
 2 
 3 + (NSString *)getMd5_32Bit_String:(NSString *)srcString{
 4     const char *cStr = [srcString UTF8String];
 5     unsigned char result[16];
 6     CC_MD5( cStr, strlen(cStr), result );
 7     NSData *data = [NSData dataWithBytes:result length:CC_MD5_DIGEST_LENGTH];
 8     data = [GTMBase64 encodeData:data];
 9     NSString * base64String = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
10     return base64String;
11 }

 

 

其次是HmacSHA1加密

 

 1 //HmacSHA1加密
 2 +(NSString *)Base_HmacSha1:(NSString *)key data:(NSString *)data{
 3     const char *cKey  = [key cStringUsingEncoding:NSASCIIStringEncoding];
 4     const char *cData = [data cStringUsingEncoding:NSASCIIStringEncoding];
 5     //Sha256:
 6     // unsigned char cHMAC[CC_SHA256_DIGEST_LENGTH];
 7     //CCHmac(kCCHmacAlgSHA256, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
 8     
 9     //sha1
10     unsigned char cHMAC[CC_SHA1_DIGEST_LENGTH];
11     CCHmac(kCCHmacAlgSHA1, cKey, strlen(cKey), cData, strlen(cData), cHMAC);
12     
13     NSData *HMAC = [[NSData alloc] initWithBytes:cHMAC
14                                           length:sizeof(cHMAC)];
15 
16     //將加密結果進行一次BASE64編碼。
17     NSString *hash = [HMAC base64EncodedStringWithOptions:0];
18     return hash;
19 }

 

 

Base64 需要用到一個庫:GTMBase64

HmacSHA1加密需要用到的庫是:CommonCryptor


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM