ios MD5加盐加密

MD5加密 是HASH算法一种、 是生成32位的数字字母混合码。 MD5主要特点是 不可逆

MD5算法还具有以下性质:
1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。

2、容易计算:从原数据计算出MD5值很容易。

3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

4、弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

5、强抗碰撞:想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。

终端代码:$ echo -n 123456|openssl md5 给字符串123456加密 输出是小写的

代码实现
1、输出大写

- (NSString *)upperMD5:(NSString *)inPutText
{
    //传入参数,转化成char
    const char *cStr = [inPutText UTF8String];
    //开辟一个16字节的空间
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    /*
     extern unsigned char * CC_MD5(const void *data, CC_LONG len, unsigned char *md)官方封装好的加密方法
     把str字符串转换成了32位的16进制数列(这个过程不可逆转) 存储到了md这个空间中
     */
    CC_MD5(cStr, (CC_LONG)strlen(cStr), result);
    
    return [[NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
             result[0], result[1], result[2], result[3],
             result[4], result[5], result[6], result[7],
             result[8], result[9], result[10], result[11],
             result[12], result[13], result[14], result[15]
             ] uppercaseString];  //大小写注意
}

2、输出小写

- (NSString *)lowerMD5:(NSString *)inPutText
{
    //传入参数,转化成char
    const char *cStr = [inPutText UTF8String];
    //开辟一个16字节的空间
    unsigned char result[CC_MD5_DIGEST_LENGTH];
    /*
     extern unsigned char * CC_MD5(const void *data, CC_LONG len, unsigned char *md)官方封装好的加密方法
      把str字符串转换成了32位的16进制数列(这个过程不可逆转) 存储到了md这个空间中
     */
    CC_MD5(cStr, (CC_LONG)strlen(cStr), result);
    
    return [[NSString stringWithFormat:@"%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X%02X",
             result[0], result[1], result[2], result[3],
             result[4], result[5], result[6], result[7],
             result[8], result[9], result[10], result[11],
             result[12], result[13], result[14], result[15]
             ] lowercaseString];  //大小写注意
}

3、加盐 调用

static NSString * salt =@"asdfghjklpoiuytrewqzxcvbnm";
NSLog(@"加盐小写:%@",[self lowerMD5:[@"123456" stringByAppendingString:salt]]);
NSLog(@"加盐大写:%@",[self upperMD5:[@"123456" stringByAppendingString:salt]]);

运行结果 :

2018-11-26 14:40:10.445541+0800 Encryption[1505:839804] 加盐小写:71d1bda9346fab4eea309f4ed74b8f80
2018-11-26 14:40:10.445646+0800 Encryption[1505:839804] 加盐大写:71D1BDA9346FAB4EEA309F4ED74B8F80

为什么加盐?
因为现在 网上有各种网站来查询MD5码,例如http://www.cmd5.com,所以
为了让MD5码更加安全 ,我们现在都采用加盐,盐要越长越乱,得到的MD5码就很难查到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值