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

简介:

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


AES   GitHub 下载地址  https://github.com/Gurpartap/AESCrypt-ObjC


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

113238760.png113238556.png



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

1
2
3
4
5
6
7
8
9
10
11
12
-( 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];
}

1
2
3
4
5
6
-(NSString *)getPwd
{
     NSUserDefaults * settings = [NSUserDefaults standardUserDefaults];
     NSString * temp = [settings objectForKey:@ "Password" ];
     return  [AESCrypt decrypt:temp password:@ "pwd" ];
}



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


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

1
2
3
4
5
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来解密加密后的数据

1
2
+ (NSString *)encrypt:(NSString *)message password:(NSString *)password;
+ (NSString *)decrypt:(NSString *)base64EncodedString password:(NSString *)password;






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




相关文章
|
25天前
|
存储 安全 数据安全/隐私保护
oss客户端加密
阿里云OSS客户端加密提供了一种安全机制,用户在上传数据前可在本地进行加密。流程包括:使用本地配置的主密钥(对称或非对称)加密一次性数据密钥,再用数据密钥加密对象,加密后的数据密钥与对象一同上传。下载时,通过主密钥解密数据密钥,然后解密对象。此方式确保数据全程加密,增强安全性,但需用户妥善管理密钥以保证数据可访问性。
30 5
|
26天前
|
应用服务中间件 开发工具 数据安全/隐私保护
客户端加密(CSE)
阿里云OSS客户端加密提供数据安全,加密解密过程在客户端完成,密钥用户自管。步骤包括:管理密钥、使用SDK加密数据、上传密文到OSS、下载时SDK解密。目前(2020年3月)仅Python SDK支持此功能,更多SDK可能会后续添加。参照阿里云最新文档以获取准确信息。
16 3
|
2月前
|
数据安全/隐私保护 Python Windows
Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)
Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)
42 0
|
3月前
|
算法 安全 数据安全/隐私保护
C/C++学习 -- 分组加密算法(DES算法)
C/C++学习 -- 分组加密算法(DES算法)
31 0
|
3月前
|
存储 前端开发 JavaScript
JavaScript学习 -- AES加密算法
JavaScript学习 -- AES加密算法
39 0
|
3月前
|
JavaScript 前端开发 算法
JavaScript学习 -- 对称加密算法3DES
JavaScript学习 -- 对称加密算法3DES
18 0
|
3月前
|
数据安全/隐私保护 Python
Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)(下)
Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)
34 1
|
3月前
|
数据安全/隐私保护 Python Windows
Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)(上)
Python办公自动化【Word转换PDF、PDF读取内容、PDF合并文件、PDF拆分文件、PDF加密文件、PPT基本操作-增加幻灯片、增加内容】(六)-全面详解(学习总结---从入门到深化)
52 0
|
3月前
|
数据安全/隐私保护 C++
c++实现http客户端和服务端的开源库以及Base64加密密码
c++实现http客户端和服务端的开源库以及Base64加密密码
|
4月前
|
移动开发 安全 数据安全/隐私保护
【教程】Ipa Guard为iOS应用提供免费加密混淆方案
概述:使用ios加固工具对ios代码保护,保护ios项目中的核心代码,