iOS MD5 SHA1 加密

2017-04-09  本文已影响132人  Pluto大叔

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

知识点

上一篇下一篇

猜你喜欢

热点阅读