iOS 加密 : MD5


MD5:首先,md5不是加密。

   md5是摘要算法,主要是用來做認證,利用自身優勢(不可逆、低碰撞率)解決公開網絡中交換密鑰、認證的問題,

   MD5相當於超損壓縮,在計算過程中原文的部分信息會丟失。

MD5為什么不可逆?例子:

原文:
快點贊啊親
加密規則:
每個字取拼音聲調+筆畫數,最后的結果計算乘積,為了也使得我的結果始終保持在一個限定范圍內,取最后結果取其與2^14=16384的余數(隨便取的,你們就當我有二進制強迫症吧)
如 快 是7畫,4聲,也就是“特征值11”,以此類推 點9+3=12 贊16+4=20 啊10+4=14 親9+1=10
最后我發明的不可逆函數值就是
11*12*20*14*10=26400與16384的余數,也就是10016
如果單單給10016這個數字和加密算法,你是無論如何不可能推倒出原文是“快點贊啊親”的,不過如果給你“快點贊啊親”你卻很容易驗證答案是否正確。

簽名有什么用?例子:

Encryption是為了保護明文的隱私性(privacy),防止隱私泄漏。設想一對小青年Alice和Bob還在曖昧中,倆人偷偷摸摸地去約會吃飯,不想讓別人知道。Alice想告訴Bob今天約會時幾點去吃飯,但是不想讓其他任何人(可以抽象為以她的情敵Carol為代表的一切其他人)知道他倆的吃飯時間,這時候就用到加密。加密后解密者可以從密文(ciphertext)中恢復出明文(plaintext),也就是吃飯時間。

到MAC的時候場景就變了。這時候Alice和Bob這對小(gou)青(nan)年(nv)關系已經很穩定了,路人皆知了。但是情敵Carol依然存在,賊心不死。Alice這個時候再也不怕倆人約會吃飯的時間被別人看到了,她怕的是情敵篡改時間,讓倆人不能碰面。於是她以明文發送時間,然后再附上對這個時間的MAC。Carol如果篡改了時間,那么MAC是照應不上的。也就是,此時不是為了保護這個約會時間的隱私性,而是為了保護它的完整性(integrity)。
(此鏈接來自知乎:http://www.zhihu.com/question/25104607/answer/38888836)

iOS上的MD5使用:
 

蘋果包裝了MD5加密的方法,使用起來十分的方便。

1、 導入頭文件

  1. #import<CommonCrypto/CommonDigest.h>  

2、加密的方法:

- (NSString *) md5:(NSString *) input {
const char *cStr = [input UTF8String];
unsigned char digest[CC_MD5_DIGEST_LENGTH];
CC_MD5( cStr, strlen(cStr), digest ); // This is the md5 call

NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];

for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
[output appendFormat:@"%02x", digest[i]];

return output;
}

3、調用加密方法:

NSString *str = @"123456";

NSString *result = [self md5:str];

NSLog(@"%@",result); 

 

 

輸出的結果如圖所示:

 

 


免責聲明!

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



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