数据安全与实例
1.网络数据加密
1>
加密对象:隐私数据,比如密码、银行信息
2>
加密方案
* 提交隐私数据,必须用POST请求
* 使用加密算法对隐私数据进行加密,比如MD5
3>
加密增强:为了加大破解的难度
* 对明文进行2次MD5
:
MD5(MD5($pass))
* 先对明文撒盐,再进行MD5
:
MD5($pass.$salt)
2.本地存储加密
1> 加密对象:重要的数据,比如游戏数据。
3.代码安全问题
1> 反编译工具:逆向工程
* 反编译出来都是纯C语言,可读性不高,但是可以知道源代码里面用的是什么框架。
2> 解决方案:发布之前对代码进行混淆。
4.什么是MD5
全称是Message Digest Algorithm
5,译为“消息摘要算法第5版”
效果:对输入信息生成唯一的128位散列值(32个字符)
5.MD5的特点
输入两个不同的明文不会得到相同的输出值
根据输出值,不能得到原始的明文,即其过程不可逆
6.MD5的应用
由于MD5加密算法具有较好的安全性,而且免费,因此该加密算法被广泛使用
主要运用在数字签名、文件完整性验证以及口令加密等方面
MD5解密网站:http://www.cmd5.com
7.MD5加密实例
/**
* MD5($pass.$salt)
*
*
@param
text
明文
*
*
@return
加密后的密文
*/
- (NSString
*)MD5Salt:(NSString
*)text
{
//
撒盐:随机地往明文中插入任意字符串
NSString *salt = [text
stringByAppendingString:@"aaa"];
return [salt
md5String];
}
注意:
撒盐:随机地往明文中插入随意字符串,但是只能插入固定的字符串,不然服务器也不能解析。
/**
* MD5(MD5($pass))
*
*
@param
text
明文
*
*
@return
加密后的密文
*/
- (NSString
*)doubleMD5:(NSString
*)text
{
return [[text
md5String]
md5String];
}
/**
*
先加密,后乱序
*
*
@param
text
明文
*
*
@return
加密后的密文
*/
- (NSString
*)MD5Reorder:(NSString
*)text
{
NSString *pwd = [text
md5String];
//
加密后pwd == 3f853778a951fd2cdf34dfd16504c5d8
NSString *prefix = [pwd
substringFromIndex:2];
NSString *subfix = [pwd
substringToIndex:2];
//
乱序后
result == 853778a951fd2cdf34dfd16504c5d83f
NSString *result = [prefix
stringByAppendingString:subfix];
NSLog(@"\ntext=%@\npwd=%@\nresult=%@", text,
pwd, result);
return result;
}