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