散列(哈希)函數加密
特點: 1.算法公開。
2.對相同的數據加密,得到的結果是一樣的。
3.得到的結果都是定長的。
MD5 用途:
1. 密碼(服務器不需要知道用戶的真實密碼, 數據庫保存的是加密的數據)
2.版權, 資源版權性驗證。
3.文件完整性校驗(下載文件校驗,上傳(斷點續傳))
MD5加鹽:鹽是固定的,相當於存在本地的祕鑰,後期升級維護不方便,也不安全。
HMAC: key 來自於服務器,一般在註冊的時候由服務提供(授權或者直接返回)。但如果key被截獲,也可以被模仿。那麼可以(密碼+key+時間)這樣就具有時效性,相對於安全一點了。
AES 對稱加密
1、ECB模式又稱電子密碼本模式(每個數據塊獨立加密):Electronic codebook,是最簡單的塊密碼加密模式,加密前根據加密塊大小(如AES爲128位)分成若干塊,之後將每塊使用相同的密鑰單獨加密,解密同理。
2、密碼分組鏈接(CBC,Cipher-block chaining)模式(每個數據塊有連接),由IBM於1976年發明,每個明文塊先與前一個密文塊進行異或後,再進行加密。在這種方法中,每個密文塊都依賴於它前面的所有明文塊。同時,爲了保證每條消息的唯一性,在第一個塊中需要使用初始化向量IV。
RSA 非對稱加密
在iOS中使用RSA加密解密,需要用到.der
和.p12
後綴格式的文件,其中.der
格式的文件存放的是公鑰(Public key)用於加密,.p12
格式的文件存放的是私鑰(Private key)用於解密。見下圖: