介紹一個輕量級iOS安全框架:SSKeyChain

SSKeyChains對蘋果安全框架API進行了簡單封裝,支持對存儲在鑰匙串中密碼、賬戶進行訪問,包括讀取、刪除和設置。SSKeyChain的作者是大名鼎鼎的SSToolkit的作者samsoffes。

項目地址:https://github.com/samsoffes/sskeychain

在工程中加入SSKeyChain

  1. 在工程中加入Security.framework框架。
  2. 把SSKeychain.h和SSKeychain.m加到項目文件夾。

使用SSKeyChain

通過以下類方法來使用SSKeyChain(請查看SSKeyChain.h):

+ (NSArray *)allAccounts;

+ (NSArray *)accountsForService:(NSString *)serviceName;

+ (NSString *)passwordForService:(NSString *)serviceNameaccount:(NSString *)account;

+ (BOOL)deletePasswordForService:(NSString *)serviceNameaccount:(NSString *)account;

+ (BOOL)setPassword:(NSString *)password forService:(NSString*)serviceName account:(NSString *)account;

?

文檔

在Xcode中安裝SSKeyChain的幫助文檔需要以下步驟:

  1. 打開菜單 Xcode -> Preferences
  2. 選擇 Downloads
  3. 選擇 Documentation
  4. 點擊底部的加號按鈕,并輸入以下URL: http://docs.samsoff.es/com.samsoffes.sskeychain.atom
  5. 點擊”SSKeyChain Documentation”旁邊的install按鈕。 (如果你看不到它,也沒有提示任何錯誤,請重啟Xcode)

確保在Organizer中可選的docset中能夠看到SSKeychain。

此外,可以在線查看SSKeychain Documentation。

調試

如果無法保存鑰匙串,請使用SSKeychain.h中提供的錯誤代碼,例如:

NSError *error = nil;

NSString *password = [SSKeychainpasswordForService:@"MyService" account:@"samsoffes"error:&error];?

if ([error code] == SSKeychainErrorNotFound) {

?????NSLog(@"Passwordnot found");

}

顯然,你對做這個應該很熟悉了。訪問鑰匙串是件痛苦的事情,你要隨時檢查它的每個錯誤和失敗。SSKeychain并沒有使它(鑰匙串)變得更穩定,它僅僅是繁瑣的C APIs封裝。

示例代碼

保存一個UUID字符串到鑰匙串:

CFUUIDRef uuid = CFUUIDCreate(NULL);
assert(uuid != NULL);
CFStringRef uuidStr = CFUUIDCreateString(NULL, uuid);

?

[SSKeychain setPassword: [NSString stringWithFormat:@"%@", uuidStr]

?forService:@"com.yourapp.yourcompany"account:@"user"];

?

然后,從鑰匙串讀取UUID:

NSString *retrieveuuid = [SSKeychainpasswordForService:@"com.yourapp.yourcompany"account:@"user"];

?

注意: setPassword和passwordForSevice方法中的services 和 accounts 參數應該是一致的。

轉載于:https://www.cnblogs.com/qyfeng009/p/5315964.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257489.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257489.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257489.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java編程基礎素數實驗報告,JAVA 基礎編程練習題1 (輸出素數)

JAVA 基礎編程練習題1 (輸出素數)JAVA 基礎編程練習題1 (輸出素數)題目:判斷 101-200 之間有多少個素數,并輸出所有素數。程序分析:判斷素數的方法:用一個數分別去除 2 到 sqrt(這個數),如果能被整除,則表明…

Go語言在掃碼支付系統中的成功實踐

今天的內容主要分四個方面。第一,金融支付系統的一些特點;第二,我們的掃碼支付系統技術選型;第三,系統迭代過程中的架構演進;第四,與Go相關的一些坑。 金融支付系統的一些特點 圖 1 首先從業務流程入手,其實非常簡單。…

一站式學習Wireshark(七):Statistics統計工具功能詳解與應用

Wireshark一個強大的功能在于它的統計工具。使用Wireshark的時候,我們有各種類型的工具可供選擇,從簡單的如顯示終端節點和會話到復雜的如Flow和IO圖表。本文將介紹基本網絡統計工具。包括:捕捉文件摘要(Summary),捕捉…

UIKit框架各個類的簡介

1.UIAcceleration: 被叫做加速事件的一個UIAcceleration類的實例是用來代表即時的三維加速數據。為了接收重力加速度,要注冊一個應用應用程序作為一個共享UIAccelerater對象的委托對象(參考UIAcceleromete類)。 2. UIAccelerater: UIAccelera…

php堆是什么,PHP 堆與堆排序的詳解

堆排序&#xff1a;堆排序是利用堆的性質進行的一種選擇排序。下面先討論一下堆。1.堆堆實際上是一棵完全二叉樹&#xff0c;其任何一非葉節點滿足性質&#xff1a;Key[i]<key[2i1]&&Key[i]<key[2i2]或者Key[i]>Key[2i1]&&key>key[2i2]即任何一非葉…

Odoo (OpenERP/TinyERP)-10.0 (Debian 8)

平臺&#xff1a; Ubuntu 類型&#xff1a; 虛擬機鏡像 軟件包&#xff1a; odoo-10.0commercial erp odoo open source openerp tinyerp服務優惠價: 按服務商許可協議 云服務器費用:查看費用 立即部署產品詳情 產品介紹Odoo https://www.odoo.com/ &#xff08;前Op…

iOS開發- 藍牙后臺接收數據(BLE4.0)

最近在做一個藍牙相關的項目, 需要在應用進入后臺, 或者手機屬于鎖屏狀態的情況下, 仍然保持藍牙連接, 并且能正常接收數據。 本來以后會很麻煩, 但是學習了下..發現就2步而已。簡單的不能再簡單了。 好了。下面是具體實現辦法。 1.在xxx-info.plist文件中, 新建一行 Required…

貪心(數據結構):COGS 468. [NOI2010]超級鋼琴

★★★☆ 輸入文件&#xff1a;piano.in 輸出文件&#xff1a;piano.out 簡單對比 時間限制&#xff1a;2 s 內存限制&#xff1a;512 MB 超級鋼琴 【問題描述】 小Z是一個小有名氣的鋼琴家&#xff0c;最近C博士送給了小Z一架超級鋼琴&#xff0c;小Z希望能夠用這架…

java實現選擇排序 帶打印,選擇排序算法的JAVA實現

選擇排序算法的JAVA實現package Utils.Sort;/***利用選擇排序法對數組排序&#xff0c;數組中元素必須實現了Comparable接口。*/public class ChooseSort implements SortStrategy{/***對數組obj中的元素以選擇排序算法進行排序*/public void sort(Comparable[] obj){if (obj …

angularjs初始化時不顯示模板內容, 不顯示html, 不顯示template

template的內容可能在需要的數據準備好之前就顯示出來了, ng-cloak可以解決這個問題 ng-cloak <div id"template1" ng-cloak>{{ hello }}</div> <div id"template2" class"ng-cloak">{{ world }}</div>

左右箭頭滑動列表

//slideshow 左右箭頭滑動一組li焦點圖 autoSlide();function autoSlide(){clearAutoSsetInterval(autoFunS,5000);}function autoFunS(){var loc$(".slideshow-box ul").css("left");if(loc"-2370px"){loc"1185";}var newlocparseInt…

20159206《網絡攻防實踐》第四周學習總結

20159206《網絡攻防實踐》第四周學習總結 教材學習內容總結 本章主要介紹了網絡嗅探和協議分析 網絡嗅探是一種常用的竊聽技術&#xff0c;利用計算機的網絡接口截獲目的地為其他計算機的數據報文&#xff0c;以監聽數據流中所包含的用戶賬戶密碼或私密信息等。 網絡泄灘具有很…

四六級php,詳解四六級查詢API+網頁

這個API是第三方API&#xff0c;第三方API的工作原理大都基于此&#xff0c;本文主要起一反三之作用&#xff0c;代碼的不處周之還望及時指出。開發環境&#xff1a;WinServer2012 php7.0 Apache2.4.8思路&#xff1a;向官方查詢界面傳遞參數&#xff0c;使用curl抓取結果網頁…

終于把joomla 的 protostar 模版的菜單,從垂直改到水平了

protostar-applying-menu-class-suffixes-horizontal-vs-vertical-menus.html joomla 3.7.5 附帶的這個template , 菜單丑的要死。 估計是新改的。 看網上的其他站點都沒這毛病。 最后終于找到解決方法了。“ nav-pills“ 前面是有空格的 To make the menu horizonal, you can …

Find non-overlap jobs with max cost

Given a set of n jobs with [start time, end time, cost] find a subset so that no 2 jobs overlap and the cost is maximum.Job: &#xff08;start_time, end_time] --- cost 如果只是求maxCost, 一維就可以做。 但是如果要知道有選了哪些job&#xff0c;則需要存成二維。…

php 跨區域,PHP跨時區的功能實現

現在有一個跨時區的應用&#xff0c;不同時區登錄的用戶需要看到自己時區的時間&#xff0c;同時也要能夠進行時區的切換。我的思路是&#xff0c;系統中所有存儲的時間都是GMT(UTC)時間&#xff0c;用戶登錄時&#xff0c;根據用戶所在的時區進行對應的顯示。首先了解一下PHP中…

js實現向上滾動效果

源碼&#xff1a;<style type"text/css"> #up_zzjs{border:1px solid #ccc;width:170px;height:182px;line-height:20px;overflow:hidden;} #up_zzjs #up_li{list-style-type:none;margin:0;padding:0;margin-left:6px;} /*系統支持ie8就選line-heigh…

利用數據的商業智能分析工具

商業智能可以定義為獲取和轉換原始數據的技術和工具&#xff0c;這些信息可以為業務運營提供有意義的好處。 商業智能的發展 商業智能&#xff08;BI&#xff09;是一個可追溯到19世紀中期的術語&#xff0c;基本上是一樣的定義。但作為結構化數據的自動化處理的參考&#xff0…

管理之道(三) - 不要吝惜贊美

多一句贊美 人們相互希望得越多&#xff0c;想要給予對方的越多……就必定越親密。   幾天前&#xff0c;我和一位朋友在紐約搭計程車&#xff0c;下車時&#xff0c;朋友對司機說&#xff1a;“謝謝&#xff0c;搭你的車十分舒適。”這司機聽了愣了一愣&#xff0c;然后說&a…

優酷視頻整段代理php,thinkphp仿優酷帶數據源碼|php仿優酷視頻源碼帶后臺功能強大...

本項目是仿優酷官網&#xff0c;優酷官網是一個集多種知識面為一體的網站&#xff0c;能全面的鍛煉我們的技能,所以我們決定仿優酷網。本項目后臺主要實現了&#xff1a;用戶管理、分類管理、視頻管理、評論管理、權限管理、輪播管理、網站配置和廣告管理以及登錄退出等模塊。前…