算法

作者: 小饼干是只松鼠 | 来源:发表于2017-05-16 14:07 被阅读12次

    MD5

    MD5:首先,md5不是加密。md5是摘要算法,主要是用来做认证,利用自身优势(不可逆、低碰撞率)解决公开网络中交换密钥、认证的问题,多用于签名识别。

    iOS上的MD5使用:

    MD5的实现 :首先需要包含头文件:

    #import <CommonCrypto/CommonDigest.h> 
    

    可以自定义NSSrtring + Catgory 实现

    + (NSString *)md5:(NSString *)string;
    
        /**
         *  MD5加密
         *
         *  @param string 需要加密的字符串
         *
         *  @return 返回加密后的结果
         */
    + (NSString *)md5:(NSString *)string{
        // OC 字符串转换位C字符串
        const char *cStr = [string UTF8String];
        // 16位加密
        unsigned char digest[CC_MD5_DIGEST_LENGTH];
        // 1: 需要加密的C字符串
        // 2: 加密的字符串的长度
        // 3: 加密长度
        CC_MD5(cStr, (CC_LONG)strlen(cStr), digest);
    
        NSMutableString *result = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2]; // 32位
        for (int i = 0; i < CC_MD5_DIGEST_LENGTH; i++) {
            [result appendFormat:@"%02X", digest[i]];
        }
        // 返回一个32位长度的加密后的字符串
        return result;
    }
    

    测试过程:

    NSString *strMD5 = @"ABCD";
    NSString *string = [NSString stringForMD5:strMD5];
    NSLog(@"%@",string);
    

    输出结果:

    2017-05-16 13:48:40.500 MD5Demo[21174:2897239] 
    CB08CA4A7BB5F9683C19133A84872CA7    
    

    关于MD5的加密和解密也可以在这个网站上测试:http://www.cmd5.com/

    AES 和 Base64 请参考 博客 MD5(加密)/AES/Base64加密和解密

    相关文章

      网友评论

          本文标题:算法

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