iOS MD5加密

上天眷顧我發表於2016-04-18
簡介

MD5(單向雜湊演算法)的全稱是Message-Digest Algorithm 5(資訊-摘要演算法),經過MD5處理後看不到原文,是一種加密演算法。

MD5的特點

輸入兩個不同的明文不會得到相同的輸出值
根據輸出值,不能得到原始的明文,即其過程不可逆

MD5的應用

由於MD5加密演算法具有較好的安全性,而且免費,因此該加密演算法被廣泛使用
主要運用在數字簽名、檔案完整性驗證以及口令加密等方面

  • 比如傳送一個電子文件,傳送前,我先得到MD5的輸出結果a。然後在對方收到電子文件後,對方也得到一個MD5的輸出結果b。如果a與b一樣就代表中途未被篡改。
  • 比如我提供檔案下載,為了防止不法分子在安裝程式中新增木馬,我可以在網站上公佈由安裝檔案得到的MD5輸出結果。
    MD5解密網站:http://www.cmd5.com

為了方便使用,我們可以把md5寫成一個分類。

標頭檔案
#import <Foundation/Foundation.h>

@interface NSString (MD5)

- (NSString *)md5_32bit;
- (NSString *)MD5_32BIT;

@end
實現檔案
#import "NSString+MD5.h"
#import <CommonCrypto/CommonDigest.h>

@implementation NSString (MD5)

- (NSString *)md5_32bit {
    const char *cStr = [self UTF8String];
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    CC_MD5( cStr, (CC_LONG)self.length, digest );
    NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
        [result appendFormat:@"%02x", digest[i]];
    return result;
}

- (NSString *)MD5_32BIT {
    const char *cStr = [self UTF8String];
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    CC_MD5( cStr, (CC_LONG)self.length, digest );
    NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
        [result appendFormat:@"%02X", digest[i]];
    return result;
}

@end


文/夢亦趣(簡書作者)
原文連結:http://www.jianshu.com/p/8898b0bb3c94
著作權歸作者所有,轉載請聯絡作者獲得授權,並標註“簡書作者”。

相關文章