加密算法列舉

    ~~~~本文主要介紹幾種分類的加密算法,以及各個分類算法的典型算法。肯定不全主要是摘要幾種常用的,僅供自己以後查看消

摘要算法

    ~~~~消息經過散列函數處理後,獲得唯一的散列值這一過程稱爲“消息摘要”,因此該類算法也可以稱爲散列算法。
    ~~~~比較常用的比如:MD算法家族,SHA算法家族。。。

  1. MD算法家族
    MD5算法的原理可簡要的敘述爲:MD5碼以512位分組來處理輸入的信息,且每一分組又被劃分爲16個32位子分組,經過了一系列的處理後,算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。
    首先需要填補信息以確保信息的比特位長度減去448後能被512整除(信息比特位長度mod 512 = 448)。也就是說數據補位後,其位數長度只差64位(bit)就是512的整數倍。然後,一個以64位二進制表示的信息的最初長度被添加進來。信息被處理成512位damgard/merkle迭代結構的區塊,而且每個區塊要通過三個不同步驟的處理
    1. SHA算法家族
      SHA算法是基於MD4算法,作爲MD算法的繼任者的。SHA與MD算法的不同之處主要是摘要長度,SHA的摘要長度更長,安全性更高。

對稱加密算

    ~~~~加密解密使用同一套密鑰,這就是對稱加密算法的核心。
    ~~~~根據加密方式又分爲密碼和分組密碼,分組密碼的工作模式包括:ECB,CBC,CFB,OFB和CTR等。密鑰的長度決定了算法的安全性。
    ~~~~比較常見的比如:DES,AES等

  1. DES
    DES算法爲密碼體制中的對稱密碼體制。首先明文根據分組模式,按64位進行分組,形成明文組,然後和密鑰64位中的56位按位替代或交換的方法形成密文組
  2. AES
    AES不是將拿到的明文一次性加密,而是分組加密,就是先將明文切分成長度相等的塊,每塊大小128bit,再對每一小塊進行加密並不是所有的原始明文串能被等分成128bit,例如原串大小200bit,那麼第二個塊只有72bit,所以就需要對第二個塊進行填充處理,讓第二個塊的大小達到128bit。
    • 常見的填充模式有:
          ~~~~NoPadding:不進行填充,要求原始加密串大小必須是128bit的整數倍;
          ~~~~PKCS5Padding:假設塊大小8字節,如果這個塊跟8字節還差n個字節,那麼就在原始塊填充n,直到滿8字節;
          ~~~~PKCS7Padding:跟PKCS5Padding的填充方式一樣,不同的是,PKCS5Padding只是對8字節的進行填充,PKCS7Padding可以對1~256字節大小的block進行填充;
    • AES有多種加密模式,包括:ECB,CBC,CTR,OCF,CFB,最常見的還是ECB和CBC模式。
          ~~~~ECB模式:每個塊進行獨立加密,塊與塊之間加密互不影響,這樣就能並行,效率高。如果兩個塊的明文一模一樣,那麼加密出來的東西也一模一樣。
          ~~~~CBC模式:引入了一個新的概念,初始向量iv。iv的作用就是爲了防止同樣的明文塊被加密成同樣的內容。原理是第一個明文塊跟初始向量做異或後加密,第二個塊跟第一個密文塊做異或再加密,依次類推,避免了同樣的塊被加密成同樣的內容。

非對稱加密算

    ~~~~非對稱加密算法與對稱加密算法的主要區別在於非對稱加密的算法用於加密和解密的密鑰不相同,一個公鑰(公開),一個密鑰(保密),公鑰加密數據只有使用私鑰能解密,反之私鑰加密,只可使用公鑰解密。
    ~~~~非對稱加密算法源於DH算法(密鑰交換算法)。比較常見分爲兩類,一類:基於大數因子分解數學難題典型非對稱加密算法:RSA;一類:基於離散對數問題的常用非對稱加密算法:ElGamal

數字簽名算法

    ~~~~數字簽名算法可以看做是一種帶有密鑰的消息摘要算法,並且密鑰包括公鑰跟私鑰。可以說數字簽名算法是非對稱加密算法和消息摘要算法的結合體。
    ~~~~數字簽名算法包括簽名和驗證兩項操作,遵循“私鑰簽名,公鑰驗證”的簽名驗證方式。因此,我們可以把數字簽名算法看成是一種附加公鑰和私鑰的消息摘要算法。
    ~~~~數字簽名算法主要包括RSA,DSA,ECDSA三種算法。RSA即是非對稱算法中的經典,也是數字簽名算法中的經典。

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