• iOS 加密 : MD5


    MD5:首先,md5不是加密。

       md5是摘要算法,主要是用来做认证,利用自身优势(不可逆、低碰撞率)解决公开网络中交换密钥、认证的问题,

       MD5相当于超损压缩,在计算过程中原文的部分信息会丢失。

    MD5为什么不可逆?例子:

    原文:
    快点赞啊亲
    加密规则:
    每个字取拼音声调+笔画数,最后的结果计算乘积,为了也使得我的结果始终保持在一个限定范围内,取最后结果取其与2^14=16384的余数(随便取的,你们就当我有二进制强迫症吧)
    如 快 是7画,4声,也就是“特征值11”,以此类推 点9+3=12 赞16+4=20 啊10+4=14 亲9+1=10
    最后我发明的不可逆函数值就是
    11*12*20*14*10=26400与16384的余数,也就是10016
    如果单单给10016这个数字和加密算法,你是无论如何不可能推倒出原文是“快点赞啊亲”的,不过如果给你“快点赞啊亲”你却很容易验证答案是否正确。

    签名有什么用?例子:

    Encryption是为了保护明文的隐私性(privacy),防止隐私泄漏。设想一对小青年Alice和Bob还在暧昧中,俩人偷偷摸摸地去约会吃饭,不想让别人知道。Alice想告诉Bob今天约会时几点去吃饭,但是不想让其他任何人(可以抽象为以她的情敌Carol为代表的一切其他人)知道他俩的吃饭时间,这时候就用到加密。加密后解密者可以从密文(ciphertext)中恢复出明文(plaintext),也就是吃饭时间。

    到MAC的时候场景就变了。这时候Alice和Bob这对小(gou)青(nan)年(nv)关系已经很稳定了,路人皆知了。但是情敌Carol依然存在,贼心不死。Alice这个时候再也不怕俩人约会吃饭的时间被别人看到了,她怕的是情敌篡改时间,让俩人不能碰面。于是她以明文发送时间,然后再附上对这个时间的MAC。Carol如果篡改了时间,那么MAC是照应不上的。也就是,此时不是为了保护这个约会时间的隐私性,而是为了保护它的完整性(integrity)。
    (此链接来自知乎:http://www.zhihu.com/question/25104607/answer/38888836)

    iOS上的MD5使用:
     

    苹果包装了MD5加密的方法,使用起来十分的方便。

    1、 导入头文件

    1. #import<CommonCrypto/CommonDigest.h>  

    2、加密的方法:

    - (NSString *) md5:(NSString *) input {
    const char *cStr = [input UTF8String];
    unsigned char digest[CC_MD5_DIGEST_LENGTH];
    CC_MD5( cStr, strlen(cStr), digest ); // This is the md5 call

    NSMutableString *output = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH * 2];

    for(int i = 0; i < CC_MD5_DIGEST_LENGTH; i++)
    [output appendFormat:@"%02x", digest[i]];

    return output;
    }

    3、调用加密方法:

    NSString *str = @"123456";

    NSString *result = [self md5:str];

    NSLog(@"%@",result); 

    输出的结果如图所示:

     
  • 相关阅读:
    数据库练习
    pymysql
    数据库索引
    数据库查询
    数据库操作
    数据库建表
    数据库初识
    shell 编程
    Struts2与SpringMVC
    SpringAOP
  • 原文地址:https://www.cnblogs.com/OC888/p/5858867.html
Copyright © 2020-2023  润新知