当前位置: 首页 > 编程日记 > 正文

sskeychain使用(轻量级框架)

原文地址:http://www.ithao123.cn/content-2407927.html

keychain的主要功能就是帮助用户安全地记住他的密码,keychain保存的密码文件都是经过加密的,其它人不能直接通过打开keychain的文件获得保存在keychain中的密码。在mac上可以安装钥匙串应用,一般情况下只有用户正确输入了mac系统的用户名和密码才能查看到用户保存在keychain中的密码。

Apple还提供了使用keychain保存密码的API,如果应用程序使用了keychain API来保存密码,保存密码的结果都可以在钥匙串应用中查看到。Apple自带的浏览器Safari就是用的keychain来保存密码的,当用户在一个网页中输入了用户名和密码之后,Safari会询问用户是否需要记住密码。如果用户选择记住Safari则会采用keychain进行密码的保存,在下次用户再次访问同一个网站的时候,系统会自动进行用户名和密码的填充。同时在钥匙串程序中,可以看到Safari保存的针对特定网页的用户名,在输入了系统登录密码之后可以查看到对应的密码明文。

2.IOS中使用keychain和userdefaults保存数据的对比

userdefault适合保存一些轻量级的数据,使用userdefault保存的数据加载的时候要快一些,数据以明文的形式保存在.plist文件中,不适合用来保存密码信息。文件的位置是Library/Application Support/iPhone Simulator/模拟器版本/Applications/应用对应的数字/Library/Preference/.plist文件

keychain采用的是将数据加密之后再保存到本地的,这样对数据而言有更高的安全性,适合保存密码之类的数据。数据保存的目录是Library/Application Support/iPhone Simulator/模拟器版本/Library/Keychains/

3.sskeychain的使用

Apple针对keychain也提供了丰富的开发文档说明,包括有Keychain Services Programming Guide:文章中包含了使用mac和ios的keychain开发,首先介绍的是keychain的基本功能和概念,然后还有一个基本的例子介绍了基本的使用keychain API的方法。在文章中还提到了Sample Code:GenericKeyChain,是使用keychain的一个例子。

对于只需要保存用户名和密码的应用来说,SSKeyChain可能更加适合,它对keychain做了相应的封装,接口相对来说更加简单。文章介绍一个轻量级IOS框架:SSKeyChain中提到了github中的SSKeyChain,并且介绍了相应的使用方法。github下的有相应的源码和简介:SSKeyChain源码。

按照说明可以将SSKeyChain的类文档加入到xcode里面去,也可以直接进行在线的查看。

4.对SSKeyChain中的password,service,account的理解和使用

既然说到要用SSKeyChain来保存用户名和密码,那么需要使用到的SSKeyChain的功能应该就包括添加用户名和密码、删除用户名和密码、查询用户名和密码。

SSKeyChain的方法中涉及到的变量主要有三个,分别如这一小节的标题所示,是password、service、account。password、account分别保存的是密码和用户名信息。service保存的是服务的类型,就是用户名和密码是为什么应用保存的一个标志。比如一个用户可以再不同的论坛中使用相同的用户名和密码,那么service保存的信息分别标识不同的论坛。由于包名通常具有一定的唯一性,通常在程序中可以用包的名称来作为service的标识。

下面两张图分别展示了测试代码和测试结果。setPassword的功能是保存account、service、password的,accoutsForService是提取对应于特定service的所有accouts,从返回结果可以看出是返回结果是Array类型的,并且Array的每一个元素是以key-value格式保存的数据。如果需要找出特定的用户名的话,需要使用valueForKey@“acct”来定位用户名。(由于在这之前keychain已经保存了一个数据,所以lastObject对应的下标是2.)

在具体的使用过程中,根据需求,可以用在同一个service中保存多个用户名和密码,在需要提取的时候提取最后一个,或者根据用户名来提取特定密码。也可以在同一个service中只保存一个用户名和密码,在需要保存新的用户名和密码的时候将原来保存的密码删除。

\

\

转载于:https://www.cnblogs.com/now-or-never/p/4858833.html

相关文章:

如何在团队中做好Code Review

一、Code Review的好处 想要做好Code Review,必须让参与的工程师充分认识到Code Review的好处 1、互相学习,彼此成就 无论是高手云集的架构师团队,还是以CURD为主的业务开发团队,大家的技术能力、经验都是有差异的。 通过Code…

分布式服务框架 Zookeeper -- 管理分布式环境中的数据

2019独角兽企业重金招聘Python工程师标准>>> 转自:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题&am…

ubuntu18下配置VS Code

配置逻辑主要是 launch.json指定预先处理的任务(preLaunchTask)及读取build文件(program) tasks.json指定输入原始文件和输入build文件(args) 参考:https://www.cnblogs.com/JsonZhangAA/p/9750282.html launch.json中的配置 {"version": "0.2.0","co…

Blender钢铁机器人建模与动画全流程制作视频教程

Blender钢铁机器人建模与动画全流程制作视频教程 流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz 语言:英语中英文字幕(根据原英文字幕机译更准确) |大小:15.8 GB |时长:19.5小时 使用软件:…

android 模板 ui布局,Android UI布局

一、线性布局-LinearLayout(至上而下布局)其中android:orientation”vertical”意思为垂直方向的线性布局,此处的”vertical”可改为”horizontal”,意思是水平方向的线性布局。android:layout_width”match_parent”意思为这个控件的宽度占满整个屏幕或者父控件&am…

两数的加减乘除

设计思路: 首先要解决把输入的字符转化为计算的数字的问题,然后解决怎样用消息框输入输出即可。 程序流程图: 源代码: 实验结果: 转载于:https://www.cnblogs.com/wxyxxx/p/4859039.html

使用Docker搭建svn服务器教程

使用Docker搭建svn服务器教程 svn简介 SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。说得简单一点…

SDK Instrumentation创建一个Note的实例

除了高层框架如Robotium的solo,我们也可以直接调用SDK底层的提供的Instrumentation的API来实现如前几篇文章描述的创建一个note的功能。总所周知之Robotium就是基于Instrumentation的框架高层抽象实现的一个项目,所以对比《Robotium创建一个Note的实例》…

UOJ #53.线段树区间修改

【题目描述】:如题,已知一个数列,你需要进行下面两种操作:1.将某区间每一个数加上x2.求出某区间每一个数的和 【输入描述】:第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。第二行包含N个…

Blender三维插图设计视频教程 3D Characters and Illustrations in Blender 2.9

Blender三维插图设计视频教程 3D Characters and Illustrations in Blender 2.9 MP4 |视频:h264,1920x1080 |音频:aac,44100 Hz |时长:16h:06分钟|文件大小:4.75 GB 流派:电子学习|语言:英语 云桥网络 平台 获取 教程 本课程详细介绍了blender 4个案…

android mac测试地址,android获取有线网的Mac地址

Android TV开发中有的机器会接有线网,需要获取Mac地址,下面是我测试的两种Mac地址的获取方式。1.一共两个方法,目前第二个方法获取的不准,最后一位数取的不对。private String getMacAddress(){String strMacAddr null;try {Inet…

[高中作文赏析]感受冬天

转载于:https://www.cnblogs.com/zhangzujin/p/4864725.html

2022-2028年中国文化产业园投资分析及前景预测报告(全卷)

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国文化行业市场行业相关概述、中国文化行业市场行业运行环境、分析了中国文化行业市场行业的…

matlab 降维工具箱

Matlab Toolbox for Dimensionality Reduction降维方法包括:Principal Component Analysis (PCA) • Probabilistic PCA • Factor Analysis (FA) • Sammon mapping • Linear Discriminant Analysis (LDA) • Multidimensional scaling (MDS) • Isomap •…

程序还没写完只能当然计算器用,先发过来用着后面的慢慢写

真的是没办法,只好先发上来用着,后面的要先处理事情,等处理完接着写!! http://files.cnblogs.com/mari/starco.rar 这个是地址!!!转载于:https://www.cnblogs.com/mari/archive/2004/12/22/80317.html

Servlet生命周期与工作原理

Servlet生命周期分为三个阶段: 1,初始化阶段 调用init()方法 2,响应客户请求阶段 调用service()方法 3,终止阶段 调用destroy()方法 Servlet初始化阶段: 在下列时刻Servlet容器装载Servlet: 1&#…

ue4中面部动画制作视频教程 Facial Animation More In Unreal Engine 4

ue4中面部动画制作视频教程 Facial Animation & More In Unreal Engine 4 时长4h 包含项目文件 1920X1080 MP4 大小解压后:5.75G 语言:英语中英文字幕(根据原英文字幕机译更准确) 面部动画&虚幻引擎4中的更多内容 信息…

android c聊天功能,Android实现简单C/S聊天室应用

Android的网络应用:简单的C/S聊天室,供大家参考,具体内容如下服务器端:提供两个类创建ServerSocket监听的主类:MyServer.java负责处理每个Socket通信的线程类:ServerThread.java客户端:是一个Android应用程序>Multi…

docker 容器访问宿主机的解决方式

需求 基于本地docker的自研及使用需要,希望docker容器的服务能连接到宿主机提供的服务。 背景 网络上查阅了大量的资料,基本的解决办法是通过手动查阅IP的方式进行, 但docker宿主机的ip是会动态改变的,并不能保证永久不变。因此…

WinAPI: 输入光标相关的函数[3]

为什么80%的码农都做不了架构师?>>> 本例测试修改光标的形色, 效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ExtCtrls;typeTForm1 class(TForm)RadioGr…

用泛型方法Java从实体中提取属性值,以及在泛型方法中的使用

public <T> T getFieldValue(Object target, String fieldName, Class<T> typeName){try {Object fieldValue FieldUtils.readField(target, fieldName, true);return (T)fieldValue;} catch (IllegalAccessException e) {log.error("出错:实体类{}没有{}类型…

藤本植物和攀爬植物模型包 Globe Plants – Bundle 23 – Vines and Creepers 03 (3D Models)

藤本植物和攀爬植物模型包 Globe Plants – Bundle 23 – Vines and Creepers 03 (3D Models) 全球植物–第23束–藤本植物和攀缘植物03 (3D模型) 大小解压后&#xff1a;1.73G 云桥网络 平台huo取素材 这个捆绑包23包括15种3D藤本植物和攀缘植物&#xff0c;用于一般的景观…

蘑菇模拟器TV版 for Android,安卓NES模拟器TV版下载

NES Emulator TV精选了上千款经典的红白机小游戏&#xff0c;我们小时候玩过的经典游戏都能够在这里找到&#xff0c;每一款游戏在这里都能够分别存档&#xff0c;没有太多时间的上班族可以尝试一下&#xff0c;给玩家带来最好的游戏体验。软件简介NES模拟器精选上千款红白机游…

由Node.js事件驱动模型引发的思考

引言 近段时间听说了Node.js&#xff0c;很多文章表述这个事件驱动模型多么多么优秀&#xff0c;应用在服务器开发中有很大的优势&#xff0c;本身对此十分感性去&#xff0c;决定深入了解一下&#xff0c;由此也引发了一些对程序设计的思考&#xff0c;记录下来。 什么是Node.…

2022-2028年中国未硫化橡胶制品行业市场运行格局及未来前景展望报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国未硫化橡胶制品行业市场行业相关概述、中国未硫化橡胶制品行业市场行业运行环境、分析了中…

使用 TListView 控件(3)

为什么80%的码农都做不了架构师&#xff1f;>>> 本例效果图: 代码文件: unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ComCtrls;typeTForm1 class(TForm)ListView1: TListView;Button…

POJ 1038 Bugs Integrated Inc (复杂的状压DP)

\(POJ~1038~~*Bugs~Integrated~Inc:\) &#xff08;复杂的状压DP&#xff09; \(solution:\) 很纠结的一道题目&#xff0c;写了大半天&#xff0c;就想练练手&#xff0c;结果这手生的。其实根据之前那道炮兵阵地就不应该写的&#xff0c;但是总觉得自己的思路会好一些&#x…

Blender基础入门学习教程 Learning Blender from Scratch

Blender基础入门学习教程 Learning Blender from Scratch 流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:aac&#xff0c;48000 Hz 语言&#xff1a;英语中英文字幕&#xff08;根据原英文字幕机译更准确&#xff09;|大小:5.5 GB |时长:7h 28m 你会学到什么 云…

android 事件冒泡,Android事件分发

当用户触摸屏幕时&#xff0c;系统会对触摸事件做出相应的相应&#xff0c;这个事件会产生一个MotionEvent&#xff0c;系统根据一定的规则将其传递给View进行处理&#xff0c;这个过程就是事件分发机制了。事件的传递分为两个阶段&#xff0c;即捕获阶段和冒泡阶段。捕获阶段&…

sqlserver trigger

1 --2 -- Create database trigger template 3 --4 USE [EasyJobExTest]5 GO6 7 --判断触发器是否存在,存在则删除8 IF EXISTS(9 select top 1 t.name as trigger_name,a.name as table_name from sys.triggers t,sys.objects a 10 where Lower(a.name)section and t.paren…