关于 iOS 加密的一些详谈

Posted AntonyGu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于 iOS 加密的一些详谈相关的知识,希望对你有一定的参考价值。

ios 加密算法有那么几种,如 md5,sha1,AES,base64 和 rsa 等。

1. md5:

      MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。(引用自百度百科)

MD5加密目前来说是不可逆的。

      MD5算法产生的是固定的128bit,即128个0和1的二进制位,而在实际应用开发中,通常是以16进制输出的,所以正好就是32位的16进制数,说白了也就是32个16进制的数字。

- (NSString *)md5:(NSDictionary *)paramsDict {
NSString *inString = [paramsDict stringValueForKey:@"data" defaultValue:@""];
    if (inString.length <= 0) {
        return @"";
    } else {
        const char *cStrValue = [inString UTF8String];
        //开辟一个16字节(128位:md5加密出来就是128位/bit)的空间(一个字节=8字位=8个二进制数)
        unsigned char outResult[CC_MD5_DIGEST_LENGTH];
        CC_MD5(cStrValue, strlen(cStrValue), outResult);
        
        //x表示十六进制,X  意思是不足两位将用0补齐,如果多余两位则不影响
        NSString *outString =
        [NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
               outResult[0], outResult[1], outResult[2], outResult[3],
               outResult[4], outResult[5], outResult[6], outResult[7],
               outResult[8], outResult[9], outResult[10], outResult[11],
               outResult[12], outResult[13], outResult[14], outResult[15]];
        /*
        //方法二:
        NSMutableString *outString = [NSMutableString string];
        for (int i = 0; i < 16; i++) {
             [outString appendFormat:@"X", outResult[i]];
        }
        */
        return outString;
    }
 }

     为什么是[16]呢,这是因为MD5算法最后生成的是128位,而在计算机的最小存储单位为字节,1个字节是8位,对应一个char类型,计算可得需要16个char。所以result是[16]。那么为什么输出的格式一定是%02x呢,而不是其它呢。这也是有原因的:因为约定MD5一般是以16进制的格式输出,那么其实这个问题就转换为把128个0和1以16进制来表示,每4位二进制对应一个16进制的元素,则需要32个16进制的元素,如果元素全部为0,放到char的数组中,正常是不会输出,如00001111,以%x输出,则是f,那么就会丢失0;但如果以%02x表示则输出结果是0f,正好是转换的正确结果。

 

2. sha1 加密

 

以上是关于关于 iOS 加密的一些详谈的主要内容,如果未能解决你的问题,请参考以下文章

HTTP与HTTPS(详谈TLS秘钥协商过程)

关于Jmeter做Rsa加密解密的一些总结

详谈JAVA中的file类与IO流

关于片段生命周期

关于SASS的一些碎碎念

详谈Python中self的作用