iOS逆向 -- HASH和對稱加密

上一篇講了 RSA加密的由來(一大堆數學公式看的很懵逼,其實大概瞭解了rsa的非對稱加密怎麼來的就可以)

今天這篇講HASH和對稱加密

HASH

hash的概念我就不介紹了 主要介紹一下它的特點和應用

通常hash有 MD5 sha1 sha256 sha523 還有更高級的hmac

hash的特點

  • 算法是公開的
  • 對相同數據運算結果相同
  • 對不同的數據運算,得到的結果默認是128位,32個字符
  • 不可逆運算

hash的用戶

  1. 用戶密碼的加密
  2. 搜索引擎
  3. 版權
  4. 數字簽名

重點來講一下如何用hash加密用戶密碼?

通常來講無論是客戶端還是服務端都不能保存用戶密碼的明文(這很危險)

所以客戶端登錄使用密碼的MD5值 發送服務器 然後服務器對比數據庫進行驗證

但是呢hash雖然是不可逆的,但是同樣有個缺點就是相同數據結果運算相同,所以就有了

 

所以直接使用MD5也變得越來越不安全了

後來呢人們想了一種方式 ‘加鹽’

密碼 + “1u93fh1QUO$!@)&$@!@%))%@!*$#@!$” 再進行md5 這樣CMD5能查出來的可能性基本就爲0了

但是呢這種方式 由於‘鹽’是固定的,所以一旦泄露後果也是不堪設想的

所以後來就有了 比較高級的 HMAC

在登錄的時候再跟服務器請求時間戳 然後進行hash 將更無懈可擊。

接下來講一下數字簽名是怎麼回事兒

數字簽名這個東西是用來確認這個東西是由你發來的,而不是經過第三方獲取後僞裝的

hash的作用就出來了,你把你的數據 還有你的數據的hash值一併發過來進行驗證,

當然這樣還是有可能會被截獲,然後第三方把你的hash一改還是無法辨認

所以數據的hash值使用RSA加密,傳過來這邊進行解密,這就是完整的數字簽名過程了

畫的稍微醜了點兒,沒關係

 

講完非對稱加密 HASH 接下里就是對稱加密了

常見算法有 DES(使用較少,強度不夠)

3DES (DES的加強版,但是需要保存3個密鑰) 

AES (高級密碼標準)

應用模式有ECB(電子密碼本模式,每一塊數據,獨立加密)

CBC(分組鏈接模式,使用一個密鑰和初始化向量IV對數據執行加密)該方案可以有效保證密文的完整性。

這些方式就不一一進行演示了

如果是iOS開發者可以訪問這裏下載幾個類來演練一下

這裏要注意一點 iOS自帶的加密庫 最後會調用到這個方法裏

CCCryptorStatus CCCrypt(
    CCOperation op,         /* kCCEncrypt, etc. */
    CCAlgorithm alg,        /* kCCAlgorithmAES128, etc. */
    CCOptions options,      /* kCCOptionPKCS7Padding, etc. */
    const void *key,
    size_t keyLength,
    const void *iv,         /* optional initialization vector */
    const void *dataIn,     /* optional per op and alg */
    size_t dataInLength,
    void *dataOut,          /* data RETURNED here */
    size_t dataOutAvailable,
    size_t *dataOutMoved)
    API_AVAILABLE(macos(10.4), ios(2.0));

然後使用符號斷點依然是可以截取到你的明文的 所以加密的時候也儘量不要直接使用明文。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章