天天看点

开源中国iOS客户端学习——(十一)AES加密

   数据加密在解密在软件开发过程中举足轻重的作用,可能有的公司在加密的时候有自己公司内部一套设计的算法,而在这方面不想浪费太大精力就可以去考虑使用第三方提供的加密算法,如AES加密算法,本篇内容介绍开源中国iOS客户端使用ASE算法加密密码;

   对一个比较大的工程我们可能都不知道某个类库或者方法在哪被使用,但是智能的Xcode给我们提供了一个全局搜索的功能,我们可以在真个工程中来搜索这个方法。 比如我不知道AES这个类库用在哪了,但是如果使用这个类库肯定会引用它的头文件,我们搜索AESCrypt

然后除了类库本身只有Config类里面包含AESCrpt.h,只有两个方法用到了,跳转到Config.m中的两个方法

1

2

3

4

5

6

7

8

9

10

11

12

<code>-(</code><code>void</code><code>)saveUserNameAndPwd:(NSString *)userName andPwd:(NSString *)pwd</code>

<code>{</code>

<code>    </code><code>NSUserDefaults * settings = [NSUserDefaults standardUserDefaults];</code>

<code>    </code><code>[settings removeObjectForKey:@</code><code>"UserName"</code><code>];</code>

<code>    </code><code>[settings removeObjectForKey:@</code><code>"Password"</code><code>];</code>

<code>    </code><code>[settings setObject:userName forKey:@</code><code>"UserName"</code><code>];</code>

<code>                                                    </code> 

<code>    </code><code>pwd = [AESCrypt encrypt:pwd password:@</code><code>"pwd"</code><code>];</code>

<code>    </code><code>[settings setObject:pwd forKey:@</code><code>"Password"</code><code>];</code>

<code>    </code><code>[settings synchronize];</code>

<code>}</code>

<code>-(NSString *)getPwd</code>

<code>    </code><code>NSString * temp = [settings objectForKey:@</code><code>"Password"</code><code>];</code>

<code>    </code><code>return</code> <code>[AESCrypt decrypt:temp password:@</code><code>"pwd"</code><code>];</code>

从上面两个方法的方法名知道方法作用,一个是保存用户名和密码,密码使用了AES加密,另一个是解密密码后再返回这个密码;保存用户名和密码是将用户名和密码放到了本地的一个沙盒只之中,获取的时候直接从本地读取加密后的文件,经过解密和服务器上用户数据进行比较(想了解开源中国iOS客户端用户登陆处理过程,敬请关注下一篇博客 《开源中国iOS客户端学习——(十二)用户登陆》,即将推出);

正如官方给出示例用法一样,AES的使用非常简单,首先要添加头文件 #import "AESCrypt.h",使用示例

<code>NSString *pwdKey = @</code><code>"新风作浪"</code><code>;</code>

<code>NSString *password = @</code><code>"duxinfeng123456"</code><code>;</code>

<code>NSString *encryptedPWD = [AESCrypt encrypt:password password:pwdKey];</code>

<code>NSString *decryptedPWD = [AESCrypt decrypt:encryptedPWD password:pwdKey];</code>

<code>NSLog(@</code><code>"加密后密码:%@  解密后密码: %@"</code><code>,encryptedPWD,decryptedPWD);</code>

打印结果 : 加密后密码:/OtTRA5Qz5+xjHB809APLA==  解密后密码: duxinfeng123456

加密 解密方法函数原型,传入的两个参数第一个是加密的数据,第二个是加密数据的key,解密的时候也需要这个key来解密加密后的数据

<code>+ (NSString *)encrypt:(NSString *)message password:(NSString *)password;</code>

<code>+ (NSString *)decrypt:(NSString *)base64EncodedString password:(NSString *)password;</code>

     本文转自新风作浪 51CTO博客,原文链接:http://blog.51cto.com/duxinfeng/1206596,如需转载请自行联系原作者

继续阅读