iOS MD5 SHA1 加密

MD5 加密實(shí)現(xiàn)方法

MD5 的時(shí)間方法可以直接使用** <CommonCrypto/CommonCrypto.h> **這個(gè)C語(yǔ)言的庫(kù)來(lái)進(jìn)行實(shí)現(xiàn)。我們可以實(shí)現(xiàn)一個(gè)NSString的分類類擴(kuò)展NSString的方法,上下具體代碼:

-(NSString*)stringToMD5:(NSString *)str{
    // 將接受的參數(shù)轉(zhuǎn)為UTF-8格式
    const char *cstr = [str UTF8String];
    // 設(shè)定接受的結(jié)果數(shù)組長(zhǎng)度
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    // 將字符串轉(zhuǎn)換成了32位的16進(jìn)制數(shù)列
    CC_MD5(cstr, (CC_LONG)strlen(cstr), result);
    // 創(chuàng)建一個(gè)可變字符串
    NSMutableString *saveResult = [NSMutableString string];
    // 組裝對(duì)應(yīng)的字符串,%02x就是輸出兩位16進(jìn)制數(shù)據(jù),不足2為補(bǔ)0
    for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
        [saveResult appendFormat:@"%02x",result[i]];
    }
    
    return saveResult;
}

SHA1 加密實(shí)現(xiàn)方式

SHA1 的實(shí)現(xiàn)方式跟MD5類似,也是可以直接使用<CommonCrypto/CommonCrypto.h>這個(gè)庫(kù),具體看下代碼:

-(NSString*)stringToSHA1:(NSString *)str{
    // 轉(zhuǎn)化位cstring 或者類似MD5的方式也行 const char *cstr = [str UTF8String];
    const char *cstr = [str cStringUsingEncoding:NSUTF8StringEncoding];
    // 生成對(duì)應(yīng)的NSData對(duì)象
    NSData *data = [NSData dataWithBytes:cstr length:self.length];
    // 創(chuàng)建一個(gè)20個(gè)位的1字節(jié)數(shù)組
    uint8_t digest[CC_SHA1_DIGEST_LENGTH];
    // 轉(zhuǎn)化為對(duì)應(yīng)的16進(jìn)制數(shù)字
    CC_SHA1(data.bytes, data.length, digest);
    // 聲明一個(gè)40字符的string對(duì)象
    NSMutableString *result = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH *2];
    // 組裝加密結(jié)果
    for (int i = 0 ; i < CC_SHA1_DIGEST_LENGTH; i++) {
        [result appendFormat:@"%02x",digest[i]];
    }
    
    return result;
}

知識(shí)點(diǎn)

  • 1字節(jié) uint8_t
  • 2字節(jié) uint16_t
  • 4字節(jié) uint32_t
  • 8字節(jié) uint64_t
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容