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);
}

打印结果如下:《iOS MD5和SHA1加密》

    原文作者:南陌
    原文地址: https://segmentfault.com/a/1190000004168874
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞