天天看點

ios RSA 非對稱加密

加密方式

  • 公鑰加密私鑰解密
  • 私鑰加密公鑰解密

    -優點:安全

    -缺點:速度慢

非對稱加密算法

  1. 找出兩個很大的質素P和Q
  2. N = P*Q
  3. M = (P-1)*(Q-1)
  4. 計算公鑰:找出整數E, E與M互質,即除了1以外沒有其它公約數(特點:公鑰簡單,通常可以公開)
  5. 私鑰:找出整數D,使得(E*D)%M=1(特點:私鑰複雜,通常私家珍藏)
  6. 加密:(X^E)%N = Y (X是明文,Y是密文)
  7. 解密:(Y^D)%N = X (X是明文,Y是密文)
公開秘鑰的好處?
  • 簡單:就是一些乘除而已
  • 可靠:
    1. 不論給出多少份明文和對應的密文,也無法根據已知的明文和密文的對應關系,破譯出下一份密文
    2. N和E可以公開給任何人加密使用,但是隻有掌握密鑰D的人才可以解密,即使加密者自己也無法解密
  • 靈活:可以産生很多的公鑰E和私鑰D的組合給不同的加密者

數字簽名

  • 發送方:
    1. “封包”->hash->“封包摘要”
    2. “封包摘要”用公鑰加密(數字簽名)+封包發送給接受方
  • 接受方
    1. “封包”->hash->“封包摘要”
    2. "數字簽名"用私鑰解密,用解密後的摘要與自己生成摘要做對比

PCKS

簡介:Public-Key Cryptography Standards (PKCS)是由美國 RSA 資料安全公司及其合作夥伴制定的一組公鑰密碼學标準,其中包括證書申請、證書更新、證書廢棄表釋出、擴充證書内容以及數字簽名、數字信封的格式等方面的一系列相關協定

  • 幾個重要的協定

    PKCS#12: 描述個人資訊交換文法标準。描述了将使用者公鑰、私鑰、證書和其他相關資訊打包的文法 蘋果的開發者證書也俗稱 P12

    PKCS#8 描述私有密鑰資訊格式,該資訊包括公開密鑰算法的私有密鑰以及可選的屬性集等 JAVA加密隻支援 PK 8

程式開發證書生成

程式開發證書生成

  1. 生成私鑰

    openssl req -new -key ca.key -out rsacert.csr

    檢視
    ios RSA 非對稱加密
  2. 建立證書請求

    openssl req -new -key ca.key -out rsacert.csr

  3. 生成證書并簽名,有效期10年

    openssl x509 -req -days 3650 -in rsacert.csr -signkey ca.key -out rsacert.crt

  4. 轉換格式(将PEM格式轉化為DER格式)

    openssl x509 -outform der -in rsacert.crt -out rsacert.der

    ios RSA 非對稱加密
  5. 導入P12檔案

    openssl pkcs12 -export -out p.p12 -inkey ca.key -in rsacert.crt

    ios RSA 非對稱加密
    在xcode檢視der檔案
    ios RSA 非對稱加密

iOS中相關函數

使用公鑰對資料加密 SecKeyEncrypt

使用私鑰對資料解密 SecKeyDecrypt

使用公鑰對數字簽名進行驗證 SecKeyRawVerify

使用私鑰生成資料簽名 SecKeyRawSign

注意:

iOS中不能使用PEM格式的證書

OpenSSL預設生成的都是PEM格式的證書

附:iOS非對稱加密demogithub連結

繼續閱讀