MD5 加密實現方法
MD5 的時間方法可以直接使用** <CommonCrypto/CommonCrypto.h> **這個C語言的庫來進行實現。我們可以實現一個NSString的分類類擴展NSString的方法,上下具體代碼:
-(NSString*)stringToMD5:(NSString *)str{
// 將接受的參數轉為UTF-8格式
const char *cstr = [str UTF8String];
// 設定接受的結果數組長度
unsigned char result[CC_MD5_DIGEST_LENGTH];
// 將字符串轉換成了32位的16進制數列
CC_MD5(cstr, (CC_LONG)strlen(cstr), result);
// 創建一個可變字符串
NSMutableString *saveResult = [NSMutableString string];
// 組裝對應的字符串,%02x就是輸出兩位16進制數據,不足2為補0
for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
[saveResult appendFormat:@"%02x",result[i]];
}
return saveResult;
}
SHA1 加密實現方式
SHA1 的實現方式跟MD5類似,也是可以直接使用<CommonCrypto/CommonCrypto.h>這個庫,具體看下代碼:
-(NSString*)stringToSHA1:(NSString *)str{
// 轉化位cstring 或者類似MD5的方式也行 const char *cstr = [str UTF8String];
const char *cstr = [str cStringUsingEncoding:NSUTF8StringEncoding];
// 生成對應的NSData對象
NSData *data = [NSData dataWithBytes:cstr length:self.length];
// 創建一個20個位的1字節數組
uint8_t digest[CC_SHA1_DIGEST_LENGTH];
// 轉化為對應的16進制數字
CC_SHA1(data.bytes, data.length, digest);
// 聲明一個40字符的string對象
NSMutableString *result = [NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH *2];
// 組裝加密結果
for (int i = 0 ; i < CC_SHA1_DIGEST_LENGTH; i++) {
[result appendFormat:@"%02x",digest[i]];
}
return result;
}
知識點
- 1字節 uint8_t
- 2字節 uint16_t
- 4字節 uint32_t
- 8字節 uint64_t