分类: 数据库开发技术
2016-12-12 21:33:53
MD5说明:MD5是安卓和ios系统中最常用的加密方式,其特点是加密后生成32位的字符串。且加密后的数据不可逆,网络上的暴力破解网页只是将MD5加密后生成的32wei位字符串与自行生成的密码字符串进行比对,字符串相同就输出对应的密码。这种方式只能破解简单的密码。有复杂数据的密码很难进行破解。因此用户的信息安全可以得到保证。因为MD5码是不可逆的,所以用户密码忘记之后只能设置新的密码,不能取回原来的密码。为了加强MD5加密的安全性,系统提供了加盐的方法,更进一步保证了数据的安全性。
MD5特点:
对任意的数据进行计算,生成固定长度的字符串.32个字符.
一般用来加密密码.
有时候也用来验证文件下载时,是否被篡改过.
文件下载完成之后计算文件的md5值,与服务器计算的MD5值比较,如果不一样那么这个文件在下载的过程中被篡改了.
使用终端命令获取加密后的MD5
#得到文件的MD5值
$ md5 文件名
#得到字符串的MD5值
md5 -s "string"
MD5加密方案,和实现步骤:
先导入分类
#import"NSString+Hash.h"
方案一 :
直接MD5计算
psd = [psd md5String];
Base64与MD5的对比:
Base64编码 : "加密"简单,算法可逆.毫无安全性可言.不能用来加密密码.
MD5 : 加密过程复杂,算法不可逆,安全性高,常用来加密密码等用户的敏感信息.但是简单的密码MD5加密之后可以暴力破解.
方案二 : 密码加盐
如果原始密码过于简单,直接进行MD5加密是很容易被暴力破解的.
为了增强密码的安全性,防止加密的密码被暴力破解,可以向原始密码中加盐.
盐 : 服务器端和客户端约定的一个字符串.
MD5+盐 : 原始密码+盐拼接出新的密码字符串,再进行MD加密.
以上为加一勺盐,比单纯的直接MD5加密安全性要高.
盐要足够的咸,越咸越安全.
//
盐。和加盐加密的方法。
NSString*salt = @"123zxcASD!@#";
psd=[[psd stringByAppendingString:salt] md5String];
方案三 : HMAC
HMAC : 加两勺盐.加两勺盐的密码加密强度比加一勺盐要高.
原理 : 原始密码+盐进行MD5计算,结算的结果+原始密码再进行MD5计算.
//盐
NSString *salt = @"123zxcASD!@#";
psd=[psd hmacMD5StringWithKey:salt];
注意
不必要用不可逆的加密算法加密密码并保存到本地.因为不可逆的加密算法加密的数据不能还原回来。保存到本地的密码无法正常使用。
苹果提供了钥匙串专门保存用户的私密信息到本地.苹果保存钥匙串的文件并不公开,这是为了进一步保证用户信息的安全性。