MD5加密

MD5背景:
1977年 RSA 发明了一道算法—>RSA加密算法.
实质:找两个很大的质数P和Q(至少都是100位以上的)
加密的时候,明文 = 明文^P (明文的P次幂)
解密的时候,密文 = 密文^Q(密文的Q次幂)
加密的时候使用公钥,解密的时候使用私钥.
由RSA衍生出来的算法有:DES AES .目前美国国家安全局采用的就是AES算法
MD5加密基于散列(HASH)函数,目前是国内最广泛的加密算法.

所有的数据(不管是一个字母还是几个G的文件)经过MD5加密后都是32位数据,认为这是不可逆的.

NSString *name = @"ZhouYong";
NSLog(@"md5String->name = %@",[name md5String]);
log输出:
md5String->name = 09f70073b76c837763b86cd5a55ac1be

- (NSString *)md5String {
    const char *str = self.UTF8String;
    unsigned char buffer[CC_MD5_DIGEST_LENGTH];

    CC_MD5(str, (CC_LONG)strlen(str), buffer);

    return [self stringFromBytes:buffer length:CC_MD5_DIGEST_LENGTH];
}

cmd5.com 是一个小黑客网站,在线破解部分MD5加密数据.这个网站收纳了大容量的数据,进行特征码对比,就是记录收集,一般的MD5码都能被查到.所以MD5也不是很安全的.
对md5加”盐”处理,国内使用较多.
“盐”的特点:a.盐要足够长 b.要足够复杂 c.要足够保密
所谓加”盐”,就是对我们要处理的数据预先设置好规则,增加一些累赘上去一起加密,后台和前端约定好规则.

 NSString *name = @"ZhouYong";
    //加盐处理
 name = [name stringByAppendingString:@"ANAF87*9&~2LDSNCA?>$%DNCLA"];
 NSLog(@"md5String->name = %@",[name md5String]);
log输出:
md5String->name = 62e407fc7317513689e736e1804b3f2e

更高级一点的HMAC 散列函数(HMAC本身也是一种加密算法)

NSString *name = @"ZhouYong";
NSLog(@"hmacMD5String->name = %@",[name hmacMD5StringWithKey:@"hmacMd5"]);
log输出:
hmacMD5String->name = c5d6cf3f7cfb0b0701f306ae98ec6ba0

HMAC 散列函数

#pragma mark - HMAC 散列函数
- (NSString *)hmacMD5StringWithKey:(NSString *)key {
    const char *keyData = key.UTF8String;
    const char *strData = self.UTF8String;
    unsigned char buffer[CC_MD5_DIGEST_LENGTH];

    CCHmac(kCCHmacAlgMD5, keyData, strlen(keyData), strData, strlen(strData), buffer);

    return [self stringFromBytes:buffer length:CC_MD5_DIGEST_LENGTH];
}

下面这张图片清晰地罗列出在实际项目开发中,对于密码保护的思路分析
这里写图片描述
加密大法,加密主要是防止网络传输过程中,数据被不法分子截取.所以加密的设置规则需要前端和后台人员协商好!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值