本文假定你已經熟練掌握了iOS建立證書,發佈app以及真機調試微信
對稱加密 加解密同一密鑰,速度快,但沒法解決密鑰共享問題app
非對稱加密 用於加密的密鑰(公鑰)能夠公開解決了密鑰共享問題,加密速度慢。函數
接收者的公鑰是公開的,任何人均可以向接受者發消息,會衍生如下問題優化
注意:公鑰和私鑰是成對的,它們互相解密,加解密能夠反過來;能夠被公開的那個叫 公鑰 。加密
以上有個缺點就是若是明文消息很大,那麼對於簽名的加解密過程以及最終的比對都是災難性的資源消耗。設計
單向散列函數包含:MD4,MD5,SHA1等,有關散列函數更多內容請查看 哈希函數調試
使用 混合密碼 加密明文,結合數字簽名之後的流程以下 code
這樣看起來是否是比較完美了,事實上還存在 公鑰 (簽名用)被僞造的風險。僞造者本身生成 密鑰對 再拿到接受者的 公鑰 就能夠給接收者發假消息了。cdn
PS:咱們回頭看一下簽名的加密設計方式、私鑰加密,公鑰解密。若是跟普通的加密用法同樣:私鑰解密、公鑰假面,行不行?答案是否認的,由於誰都能拿到公鑰,用公鑰加密就沒法確認發送者的身份了。blog
爲了方便比對咱們在混合密碼結合數字證書的流程圖中只加上 混合密碼公鑰的證書認證,以下圖
不是的,只是用到的原理相似,iOS簽名機制沒這麼複雜,由於只是簽名沒有加密。 仍是來直接看圖吧:
事實上,在簽名當中還須要帶有 一些額外的信息,好比:
至於爲何須要這些信息,這裏不作過多解釋,建立過證書的同窗應該很熟悉。這些信息都放在了mobileprovision
文件當中了。 那麼爲什麼不直接放到證書當中去呢?畢竟多一個文件須要再次簽名。 咱們知道,一個證書是能夠供同一開發者多個app使用的,若是把app相關的信息直接放到證書裏面,對於多個app 就須要 建立多個證書,達不到證書公用的目的。 最終完整的簽名流程以下
筆者和朋友作了一個小副業,微信公衆號,替你省錢,分享還能賺點小錢; 幫忙關注,支持一下,權當請我喝咖啡,謝謝。 若是很差用,能夠取消。