ios MD5加盐加密
程序员文章站
2024-03-19 10:59:52
...
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 [email protected]"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码就很难查到。
下一篇: 前端js实现md5加密