iOS之密碼學

一玩般、非對稱加密

  - RSA :

    +?公鑰加密,私鑰解密首繁;

+ 私鑰加密作郭,公鑰解密;

    + 只能通過因式分解來破解


二弦疮、對稱加密

  - DES

  - 3DES

  - AES (高級密碼標準夹攒,美國國家安全局使用,iOS操作系統(tǒng)內(nèi)部使用胁塞,目前還沒有發(fā)現(xiàn)過被破解的案例)


三咏尝、哈希散列函數(shù) (摘要算法)

  1、常見算法

    - MD5

    - SHA1

    - SHA256/512

  2啸罢、散列函數(shù)特點

    - 算法是公開的

    - 對相同的數(shù)據(jù)加密编检,得到的結果是一樣的

    - 對不同的數(shù)據(jù)加密,得到的結果是一樣長的32位字符 由a-Z 0-9 組成

    - 信息摘要伺糠,信息指紋蒙谓,是用來做識別的,不能反算


四训桶、iOS開發(fā)兩條原則

1、不允許在網(wǎng)絡上傳遞明文的用戶隱私信息

  解決方案:

* 各種加密算法(MD5 ?AES..........)酣倾,但是有些算法并不安全舵揭,像MD5算法在網(wǎng)上隨便找個網(wǎng)站都可以輕松的反加密破解掉 ,以下提供兩種安全策略:

    - 加鹽

      + 所謂的“鹽”躁锡,其實可以理解為一串又臭又長的字符串午绳,例如:UYGUYF&**%&**^*(&%&%&^TUGUYRFG^&R^&F^%^R$%ERFV^&VB&^R%^V

      + 客戶端用用戶的原始密碼拼接鹽再MD5得到的一串32位字符串發(fā)給服務端,服務端也用相同的算法得到字符串來對比結果

      + 鹽要足夠長映之,無規(guī)則拦焚,這樣才不容易被破解,鹽一般都是寫死在本地杠输,對于移動開發(fā)來說 只有iOS ?安卓 ?服務器 三個人知道

      + 弊端: 其實加鹽已經(jīng)算比較安全了赎败,但是假如某天安卓的那哥們嫌自己的工資太低,找老板想要漲工資蠢甲,老板沒批僵刮,安卓那哥們直接辭職,并把加密算法和鹽通通公布出去鹦牛,那么GG

    - HMAC

      +?客戶端發(fā)出登錄請求搞糕,服務器返回一個隨機值KEY,客戶端保存這個隨機值KEY至本地

      +?客戶端將該隨機值KEY和用戶的密碼進行 hmac 運算曼追,遞交給服務器窍仰,服務器保存這個值( (KEY+密碼)HMAC ?),至此,注冊已完成

      + 登錄:獲取本地的密鑰 KEY礼殊,(KEY+密碼)HMAC發(fā)送至服務器驹吮,服務器取出保存的值判斷密碼是否匹配

      +?好處:登錄的過程中鲫忍,黑客截獲了我們發(fā)送的數(shù)據(jù),他也只能得到 hmac 加密過后的結果钥屈,拿不到KEY悟民,反加密不出密碼,甚至連服務器也不知道真正的密碼篷就,從而保證了安全性

    - HMAC 高端玩法

      + 登錄:獲取本地的密鑰 KEY射亏,(KEY+密碼)HMAC+“時間戳精確到分” ,例如:(KEY+密碼)HMAC+“201808031543”? ?發(fā)送至服務器

      +?服務器判斷竭业,取出保存的值(KEY+密碼)HMAC智润,拼接“201808031544”,與客戶端發(fā)來的做匹配未辆,若不對窟绷,再用 ?(KEY+密碼)HMAC+“201808031543”做匹配

      + 好處:加密后的密文是變化的,黑客拿到密文后在兩分鐘之內(nèi)才有效咐柜,然而拿到這個密文又有卵用兼蜈?


2、在本地不允許明文的保存用戶隱私信息

  解決方案:

    - 保存密文至程序本地拙友,反算回明文后加載進內(nèi)存 (麻煩)

    -?鑰匙串(iOS開發(fā)者的福音)

      + 蘋果“生態(tài)圈”为狸,從iOS7.0.3版本開始,蘋果開放給開發(fā)者訪問遗契!

      + 鑰匙串加密方式就是AES加密辐棒,可以將保存的密碼以明文的方式反算給你

      + 鑰匙串蘋果原生都是c語言的接口,代碼又臭又長牍蜂,但有三方框架漾根,推薦 SSkeyChain

      + 用到的參數(shù)就三個:賬號----密碼-----包名(Bundle identifier)

  以下就是SSkeyChain的所有接口,簡單易用:

+ (NSArray *)allAccounts;

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

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

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

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

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末鲫竞,一起剝皮案震驚了整個濱河市辐怕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌贡茅,老刑警劉巖秘蛇,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異顶考,居然都是意外死亡赁还,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門驹沿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艘策,“玉大人,你說我怎么就攤上這事渊季∨竽瑁” “怎么了罚渐?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長驯妄。 經(jīng)常有香客問我荷并,道長,這世上最難降的妖魔是什么青扔? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任源织,我火速辦了婚禮,結果婚禮上微猖,老公的妹妹穿的比我還像新娘谈息。我一直安慰自己,他們只是感情好凛剥,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布侠仇。 她就那樣靜靜地躺著,像睡著了一般犁珠。 火紅的嫁衣襯著肌膚如雪逻炊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天盲憎,我揣著相機與錄音嗅骄,去河邊找鬼。 笑死饼疙,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的慕爬。 我是一名探鬼主播窑眯,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼医窿!你這毒婦竟也來了磅甩?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤姥卢,失蹤者是張志新(化名)和其女友劉穎卷要,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體独榴,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡僧叉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了棺榔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓶堕。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖症歇,靈堂內(nèi)的尸體忽然破棺而出郎笆,到底是詐尸還是另有隱情谭梗,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布宛蚓,位于F島的核電站激捏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏凄吏。R本人自食惡果不足惜远舅,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望竞思。 院中可真熱鬧表谊,春花似錦、人聲如沸盖喷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽课梳。三九已至距辆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間暮刃,已是汗流浹背跨算。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留椭懊,地道東北人诸蚕。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像氧猬,于是被迫代替她去往敵國和親背犯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結構(3).初始化時...
    歐辰_OSR閱讀 29,371評論 8 265
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,096評論 1 32
  • /**ios常見的幾種加密方法: 普通的加密方法是講密碼進行加密后保存到用戶偏好設置( [NSUserDefaul...
    彬至睢陽閱讀 2,927評論 0 7
  • GET和POST請求 GET和POST請求簡介 GET請求模擬登陸 POST請求模擬登陸 GET和POST的對比 ...
    時間不會倒著走閱讀 563評論 0 1
  • 電波盅抚?聲場漠魏?磁場?像一大群力量向我們襲來妄均。也許這是一場沒有硝煙的戰(zhàn)爭柱锹,卻是一場聲勢浩蕩的比賽。沒有阻撓丰包,只有團結和...
    Cinko閱讀 205評論 0 17