数据安全与实例
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
全称是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;
}
/**
* 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;
}