用封装类保存密码的两种方法

使用Keychain存储用户敏感信息

iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。从ios 3。0开始,跨程序分享keychain变得可行。

如何需要在应用里使用使用keyChain,我们需要导入Security.framework ,keychain的操作接口声明在头文件SecItem.h里。直接使用SecItem.h里方法操作keychain,需要写的代码较为复杂,为减轻咱们程序员的开发,我们可以使用一些已经封装好了的工具类,下面我会简单介绍下我用过的两个工具类:KeychainItemWrapper和SFHFKeychainUtils。

KeychainItemWrapper 

KeychainItemWrapper是apple官方例子“GenericKeychain”里一个访问keychain常用操作的封装类,在官网上下载了GenericKeychain项目后,只需要把“KeychainItemWrapper.h”和“KeychainItemWrapper.m”拷贝到我们项目,并导入Security.framework 。KeychainItemWrapper的用法:

 
  1.   
  2. KeychainItemWrapper *wrapper [[KeychainItemWrapper alloc] initWithIdentifier:@"Account Number"    
  3.                                                                    accessGroup:@"YOUR_APP_ID_HERE.com.yourcompany.AppIdentifier"];   
  4.   
  5. //保存帐号   
  6. [wrapper setObject:@"<帐号>" forKey:(id)kSecAttrAccount];     
  7.        
  8. //保存密码   
  9. [wrapper setObject:@"<帐号密码>" forKey:(id)kSecValueData];     
  10.        
  11. //从keychain里取出帐号密码   
  12. NSString *password [wrapper objectForKey:(id)kSecValueData];       
  13.   
  14. //清空设置   
  15. [wrapper resetKeychainItem];   

另外需要引入Security.framework 和KeychainItemWrapper头文件

其中方法“- (void)setObject:(id)inObject forKey:(id)key;”里参数“forKey”的值应该是Security.framework 里头文件“SecItem.h”里定义好的key,用其他字符串做key程序会崩溃!



SFHFKeychainUtils

SFHFKeychainUtils是另一个封装了KeyChain简单操作的第三方类库,使用上比KeychainItemWrapper要简单点,SFHFKeychainUtils只提供了获取、保存和删除三个方法:

  1. #import    
  2.   
  3. @interface SFHFKeychainUtils NSObject {   
  4.        
  5. }   
  6.   
  7.   
  8. (NSString *) getPasswordForUsername: (NSString *) username andServiceName: (NSString *) serviceName error: (NSError **) error;   
  9.   
  10.   
  11. (BOOLstoreUsername: (NSString *) username andPassword: (NSString *) password forServiceName: (NSString *) serviceName updateExisting: (BOOLupdateExisting error: (NSError **) error;   
  12.   
  13.   
  14. (BOOLdeleteItemForUsername: (NSString *) username andServiceName: (NSString *) serviceName error: (NSError **) error;   
  15.   
  16. @end  
 

使用方法:

  1. #define ServiceName @"com.mycompany.yourAppServiceName"   
  2.   
  3. NSError *error;   
  4. NSString *userName @"<用户名>";   
  5. NSString *password @"<用户密码>";   
  6.        
  7.   
  8. BOOL saved [SFHFKeychainUtils storeUsername:userName   
  9.                                   andPassword:password    
  10.                                forServiceName:ServiceName    
  11.                                updateExisting:YES    
  12.                                      error:&error ];   
  13. if (!saved) {   
  14.     NSLog(@"保存密码时出错:%@"error);   
  15. }   
  16.        
  17. error nil;   
  18. NSString *thePassword [SFHFKeychainUtils getPasswordForUsername:userName    
  19.                                                    andServiceName:ServiceName    
  20.                                                             error:&error];   
  21. if(error){   
  22.     NSLog(@"从Keychain里获取密码出错:%@"error);   
  23. }   

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
-------------------------------------------------------------------------------- 飞鸽传书 (IP Messenger) Ver2.06 Copyright (C) 1996-2004 SHIROUZU Hiroaki All Rights Reserved. -------------------------------------------------------------------------------- 目录: 1. 软件简介 2. 许可协议 3. 系统要求 4. 使用说明 5. 相关信息 6. 广域网设置(广播设置) 7. 补充 8. 支持 9. 更新历史 10. 感谢 ================================================================================ 重要说明: comctl32.dll(公共控件) 要求 4.71 或以上版本 更多信息请参见 "系统要求" ================================================================================ -------------------------------------------------------------------------------- 1. 软件简介 - IPMsg 是一款局域网内即时通信软件, 基于 TCP/IP(UDP). 可运行于多种操作平台(Win/Mac/UNIX/Java), 并实现跨平台信息交流. - 不需要服务器支持. - 支持文件/文件夹的传送 (2.00版以上) - 通讯数据采用 RSA/Blofish 加密 (2.00版以上) - 十分小巧, 简单易用, 而且你可以完全免费使用它 - 目前已有的版本包括: Win32, Win16, MacOS, MacOSX, X11, GTK, GNOME, Java 等, 并且公开源代码. 请查看以下地址以获得相关信息: http://www.ipmsg.org/ -------------------------------------------------------------------------------- 2. 许可协议 (BSD License) Copyright (c) 1996-2004 SHIROUZU Hiroaki All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of the SHIROUZU Hiroaki nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRI
源码包主要内容: --CuteSoap:ATL组件代码,用VC++封装的Web Services的客户端调用组件,支持同步与异步两种调用,支持多种参数类型的打包。在“CSDN助手”中用于论坛的登录。 --CSDNAgent:ATL组件代码,封装CSDN常用的功能 --程序集:这是CSDN助手的页面文件,包含大量javascript、vbscript ============================================= CSDN助手,采用独特的设计,在包含所有CSDN论坛功能的基础上,实现了更多方便实用的特性。 特色功能: 1、包括所有CSDN论坛功能:如看帖、回帖、结帖、管理、搜索 等等。 2、签名走马灯:可指定签名列表,循环使用。让每一次的签名都与众不同。 3、缓存优化:采用Moniker进行帖子的下载,优化缓存操作,为Internet临时目录瘦身,避免了临时文件的过度膨胀。 4、帖子监视:尽管回帖挣分,当“有新回复”或“已结帖”时,自动弹出窗口提示您。 5、帖子收藏:将帖子收藏起来,以备查阅。 6、查看历史记录:保存帖子的查看记录,以备查阅。 7、新消息检测:如有新的消息,自动弹出提示窗口。 8、多帐号管理:可管理多个帐号,可保存用户名和密码信息。 9、丰富的体验:多标签浏览 + 鼠标拖拽 + 鼠标手势。 特别提示: *****如何加入监视区: 1、回复帖子后,自动将帖子加入“监视区”; 2、右键点击帖子链接,或在帖子的显示页面点击右键;在弹出的快捷菜单中点击“添加到监视区”即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值