[置顶] 开源中国iOS客户端学习——(十一)AES加密
2013-12-02 17:53
501 查看
数据加密在解密在软件开发过程中举足轻重的作用,可能有的公司在加密的时候有自己公司内部一套设计的算法,而在这方面不想浪费太大精力就可以去考虑使用第三方提供的加密算法,如AES加密算法,本篇内容介绍开源中国iOS客户端使用ASE算法加密密码;
AES GitHub 下载地址 https://github.com/Gurpartap/AESCrypt-ObjC
对一个比较大的工程我们可能都不知道某个类库或者方法在哪被使用,但是智能的Xcode给我们提供了一个全局搜索的功能,我们可以在真个工程中来搜索这个方法。 比如我不知道AES这个类库用在哪了,但是如果使用这个类库肯定会引用它的头文件,我们搜索AESCrypt
然后除了类库本身只有Config类里面包含AESCrpt.h,只有两个方法用到了,跳转到Config.m中的两个方法
[cpp] view
plaincopy
-(void)saveUserNameAndPwd:(NSString *)userName andPwd:(NSString *)pwd
{
NSUserDefaults * settings = [NSUserDefaults standardUserDefaults];
[settings removeObjectForKey:@"UserName"];
[settings removeObjectForKey:@"Password"];
[settings setObject:userName forKey:@"UserName"];
pwd = [AESCrypt encrypt:pwd password:@"pwd"];
[settings setObject:pwd forKey:@"Password"];
[settings synchronize];
}
[cpp] view
plaincopy
-(NSString *)getPwd
{
NSUserDefaults * settings = [NSUserDefaults standardUserDefaults];
NSString * temp = [settings objectForKey:@"Password"];
return [AESCrypt decrypt:temp password:@"pwd"];
}
从上面两个方法的方法名知道方法作用,一个是保存用户名和密码,密码使用了AES加密,另一个是解密密码后再返回这个密码;保存用户名和密码是将用户名和密码放到了本地的一个沙盒只之中,获取的时候直接从本地读取加密后的文件,经过解密和服务器上用户数据进行比较(想了解开源中国iOS客户端用户登陆处理过程,敬请关注下一篇博客 《开源中国iOS客户端学习——(十二)用户登陆》,即将推出);
正如官方给出示例用法一样,AES的使用非常简单,首先要添加头文件 #import "AESCrypt.h",使用示例
[cpp] view
plaincopy
NSString *pwdKey = @"新风作浪";
NSString *password = @"duxinfeng123456";
NSString *encryptedPWD = [AESCrypt encrypt:password password:pwdKey];
NSString *decryptedPWD = [AESCrypt decrypt:encryptedPWD password:pwdKey];
NSLog(@"加密后密码:%@ 解密后密码: %@",encryptedPWD,decryptedPWD);
打印结果 : 加密后密码:/OtTRA5Qz5+xjHB809APLA== 解密后密码: duxinfeng123456
加密 解密方法函数原型,传入的两个参数第一个是加密的数据,第二个是加密数据的key,解密的时候也需要这个key来解密加密后的数据;
[cpp] view
plaincopy
+ (NSString *)encrypt:(NSString *)message password:(NSString *)password;
+ (NSString *)decrypt:(NSString *)base64EncodedString password:(NSString *)password;
原创博客欢迎转载分享,请注明出处http://blog.csdn.net/duxinfeng2010
AES GitHub 下载地址 https://github.com/Gurpartap/AESCrypt-ObjC
对一个比较大的工程我们可能都不知道某个类库或者方法在哪被使用,但是智能的Xcode给我们提供了一个全局搜索的功能,我们可以在真个工程中来搜索这个方法。 比如我不知道AES这个类库用在哪了,但是如果使用这个类库肯定会引用它的头文件,我们搜索AESCrypt
然后除了类库本身只有Config类里面包含AESCrpt.h,只有两个方法用到了,跳转到Config.m中的两个方法
[cpp] view
plaincopy
-(void)saveUserNameAndPwd:(NSString *)userName andPwd:(NSString *)pwd
{
NSUserDefaults * settings = [NSUserDefaults standardUserDefaults];
[settings removeObjectForKey:@"UserName"];
[settings removeObjectForKey:@"Password"];
[settings setObject:userName forKey:@"UserName"];
pwd = [AESCrypt encrypt:pwd password:@"pwd"];
[settings setObject:pwd forKey:@"Password"];
[settings synchronize];
}
[cpp] view
plaincopy
-(NSString *)getPwd
{
NSUserDefaults * settings = [NSUserDefaults standardUserDefaults];
NSString * temp = [settings objectForKey:@"Password"];
return [AESCrypt decrypt:temp password:@"pwd"];
}
从上面两个方法的方法名知道方法作用,一个是保存用户名和密码,密码使用了AES加密,另一个是解密密码后再返回这个密码;保存用户名和密码是将用户名和密码放到了本地的一个沙盒只之中,获取的时候直接从本地读取加密后的文件,经过解密和服务器上用户数据进行比较(想了解开源中国iOS客户端用户登陆处理过程,敬请关注下一篇博客 《开源中国iOS客户端学习——(十二)用户登陆》,即将推出);
正如官方给出示例用法一样,AES的使用非常简单,首先要添加头文件 #import "AESCrypt.h",使用示例
[cpp] view
plaincopy
NSString *pwdKey = @"新风作浪";
NSString *password = @"duxinfeng123456";
NSString *encryptedPWD = [AESCrypt encrypt:password password:pwdKey];
NSString *decryptedPWD = [AESCrypt decrypt:encryptedPWD password:pwdKey];
NSLog(@"加密后密码:%@ 解密后密码: %@",encryptedPWD,decryptedPWD);
打印结果 : 加密后密码:/OtTRA5Qz5+xjHB809APLA== 解密后密码: duxinfeng123456
加密 解密方法函数原型,传入的两个参数第一个是加密的数据,第二个是加密数据的key,解密的时候也需要这个key来解密加密后的数据;
[cpp] view
plaincopy
+ (NSString *)encrypt:(NSString *)message password:(NSString *)password;
+ (NSString *)decrypt:(NSString *)base64EncodedString password:(NSString *)password;
原创博客欢迎转载分享,请注明出处http://blog.csdn.net/duxinfeng2010
相关文章推荐
- 开源中国iOS客户端学习——(十)搜索功能
- IOS导航栏的简单用法以及自定义实现例程
- 开源中国iOS客户端学习——(九)代码片段之时间标记
- 开源中国iOS客户端学习——(七)MBProgressHUD特效
- 开源中国iOS客户端学习——(四)GCDiscreetNotificationView提示视图
- 开源中国iOS客户端学习——(三)再看协议与委托
- 开源中国iOS客户端学习——(二)下拉刷新特效EGOTableViewPullRefresh
- 开源中国iOS客户端学习——(一)Prefix.pch文件
- 开源中国iOS客户端学习——序
- IOS之【ios程序的生命周期】
- 判断ios当前的sdk版本的方法
- iOS开发中手机号码和价格金额有效性判断及特殊字符的限制
- iOS 中的字体预览
- IOS学习之IOS沙盒(sandbox)机制和文件操作
- ios 微博接入
- IOS 触摸事件、手势识别讲解
- iOS上地图画线,画线区域内的经纬度坐标点添加大头针
- 联想Y460笔记本BIOS相关介绍与设置图解
- IOS发送Email的方法
- 戴尔dell服务器 PowerEdge server如何进入BIOS及恢复BIOS出厂设置