美文网首页
iOS MD5 SHA1 加密

iOS MD5 SHA1 加密

作者: Pluto大叔 | 来源:发表于2017-04-09 00:11 被阅读132次

    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

    相关文章

      网友评论

          本文标题:iOS MD5 SHA1 加密

          本文链接:https://www.haomeiwen.com/subject/dwmrattx.html