iOS MD5和SHA1加密

MD5加密和SHA1加密

軟件開發開發過程當中,對數據的處理很重要。而對於數據的安全,數據的加密尤其重要。

簡述:

MD5即Message Digest Algorithm 5(信息-摘要算法 5),用於確保信息傳輸完整一致。是計算機普遍使用的雜湊算法之一。

SHA即Secure Hash Algorithm(安全散列算法) 是美國國家安全局 (NSA) 設計,美國國家標準與技術研究院 (NIST) 發佈的一系列密碼散列函數。

在進行加密以前,須要導入頭文件#import <CommonCrypto/CommonDigest.h>這是一個系統的C/C++共享庫

導入庫以後,就能夠編程了

- (NSString *)md5:(NSString *)str{
    // 轉化成utf-8
    const char *cStr=[str UTF8String];
    // 開闢一個16字節(128位:MD5加密出來就是128位/bit(字節),1字節=8位)的空間
    unsigned char result[16];
    // 加密存儲到result中,將cStr字符串轉換成了32位,通常來講,此過程不可逆,即只能加密,不能解密
    CC_MD5(cStr, strlen(cStr), result);
    // 其中%02x是格式控制符:‘x’表示以16進制輸出,‘02’表示不足兩位,前面補0
    return [NSString stringWithFormat:@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
            result[0], result[1], result[2], result[3],
            result[4], result[5], result[6], result[7],
            result[8], result[9], result[10], result[11],
            result[12], result[13], result[14], result[15]];
// md5加密另外一種寫法:利用for循環輸出
- (NSString *)md5:(NSString *)str{
    // 轉化成utf-8
    const char *cStr=[str UTF8String];
    // 開闢一個16字節(128位:MD5加密出來就是128位/bit(字節),1字節=8位)的空間
    unsigned char result[16];
    // 加密存儲到result中,將cStr字符串轉換成了32位
    CC_MD5(cStr, strlen(cStr), result);
    // 其中%02x是格式控制符:‘x’表示以16進制輸出,‘02’表示不足兩位,前面補0
    NSMutableString *mStr=[NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH];
    for (int i=0; i<CC_MD5_DIGEST_LENGTH; i++) {
        [mStr appendFormat:@"%02X",result[i]];
    }
    return mStr;
// sha1加密
- (NSString *)sha1:(NSString *)str{
    const char *cStr=[str cStringUsingEncoding:NSUTF8StringEncoding];
    NSData *data=[NSData dataWithBytes:cStr length:str.length];
    
    uint8_t disgest[CC_SHA1_DIGEST_LENGTH];
    
    CC_SHA1(data.bytes, data.length, disgest);
    
    NSMutableString *output=[NSMutableString stringWithCapacity:CC_SHA1_DIGEST_LENGTH*2];
    
    for (int i=0; i<CC_SHA1_DIGEST_LENGTH; i++) {
        [output appendFormat:@"%02x",disgest[i]];
    }
    
    return output;
}

而後直接調用方法就能夠了

viewDidLoad方法中,算法

- (void)viewDidLoad {
    [super viewDidLoad];
    // 假設對1進行加密,內容可自選
    NSString *string=@"1";
    // md5加密
    NSString *str = [self md5:string];
    // 打印
    NSLog(@"str=%@",str);
    
    // sha1加密
    NSString *str1=[self sha1:string];
    // 打印
    NSLog(@"str1=%@",str1);
}

打印結果以下:圖片描述編程

相關文章
相關標籤/搜索