天天看點

iOS對稱加密 AES DES

對稱加密解密用同一個密鑰, 是以密鑰的保密就很重要

介紹

  • DES:資料加密标準

    DES設計中使用了分組密碼設計的兩個原則:混淆(confusion)和擴散(diffusion)

  • 3DES: 是DES向AES過渡的加密算法

    使用3條56位的密鑰對資料進行三次加密。是DES的一個更安全的變形,目前還沒有關于攻破3DES的報道

  • AES:進階加密标準

    是美國聯邦政府采用的一種區塊加密标準。這個标準用來替代原先的DES

ECB & CBC介紹

ECB電子代碼本

  • 把每一個資料塊獨立加密,最後再拼接。解密也是同樣的道理。先拆分資料塊,獨立解密
  • 特點: 每個塊都是獨立加密的

終端測試指令:

加密

openssl enc -des-ecb -K 616263 -nosalt -in msg1.txt -out msg1.bin

解析:openssl 庫函數、 enc加密 、des-ecb 加密方式方法、 -k 加密key、 616263 abc的16進制、 -nosalt 不加鹽、-in msg1.txt 加密哪個文本、 -out msg1.bin 輸出bin檔案

解密

openssl enc -des-ecb -K 616263 -nosalt -in msg1.bin -out msg1.txt -d

檢視之後的二進制檔案

xxd msg1.bin

CBC密碼塊鍊

  • 加密每一個資料塊,都會與上一個資料塊之間有聯系;密碼塊鍊,使用密鑰和一個向量對資料執行加密轉換。能夠保證密文的完整性,如果一個資料改變了,後面資料都會造成破壞!
  • 特點:使用一個秘鑰和一個初始化向量(IV)對資料執行加密轉換
  • 優點:可以有效的保證密文的完整性
密碼學為什麼和幾何能扯到關系?

因為幾何是有規律的,但結果是多變的

現代加密學都和幾何有關,因為幾何(包含圓形、橢圓、球體)的變量的是規律的,但是結果是多變的。

終端測試指令

加密

openssl enc -des-cbc -K 616263 -iv 0000000000000000 -nosalt -in a.txt -out msg1.bin

解密

openssl enc -des-cbc -K 616263 -iv 0000000000000000 -nosalt -in msg1.bin -out msg4.txt -d

檢視加密之後的二進制檔案

xxd msg1.bin

iOS中的函數

CCCrypt:對稱加密的核心函數(加密、解密)

  • 參數:
  1. 加密kCCEncrypt、解密kCCDecrypt
  2. 加密算法 AES/DES

    kCCAlgorithmAES 進階加密标準

    kCCAlgorithmDES 資料加密标準

  3. 加密選項:ECB/CBC
  4. 加密的密鑰
  5. 密鑰長度
  6. iv 初始化向量 DES加密為nil
  7. 加密的長度
  8. 加密的資料長度
  9. 密文的記憶體位址
  10. 密文緩沖區大小
  11. 加密結果大小

附:iOS對稱加密的demogithub連結