DES密碼編譯演算法學習前奏

來源:互聯網
上載者:User

 

       這幾天看了一下DES加密,認真看的話這個演算法並不難,有時候覺得困難時因為自己看不下去。茫茫人海,和己者寡。

       <!--[endif]-->

       要學習DES密碼編譯演算法,我覺得有幾點是要先瞭解的,下面一一列出來:

<!--[if !supportLists]-->1.  <!--[endif]-->模2加運算

這個是比較好理解的,就是兩個數相加然後除2取餘。

<!--[if !supportLists]-->2.  <!--[endif]-->理解其中的置換

一開始的時候就會對明文進行置換,通過初始置換IP:

<!--[endif]-->

這個表的含義就是,第一個58就是你明文中的第58個元素,你要放到1的位置,然後把明文中第50個元素放到2的位置,以此類推。

<!--[if !supportLists]-->3.  <!--[endif]-->子密鑰的產生

<!--[endif]-->

子密鑰產生分為三步走:

第一步,先把密鑰中的同位為去掉,然後根據選擇置換PC-1講剩下的密鑰分成兩塊C0和D0;

第二步,將C0和D0進行迴圈左移變換,變換後產生C1和D1,然後C1和D1合并,通過選擇置換PC-2產生子密鑰K1;

第三步,C1和D1再次經過迴圈左移變換,產生C2和D2,C2和D2合并,通過選擇置換PC-2產生子密鑰K2;

第四步,以此類推,需要注意其中迴圈左移的位元,一共是迴圈左移十六次,其中LS1(第一次),LS2(第二次),LS9,LS16是迴圈左移一位,其他的都是左移兩位。

<!--[if !supportLists]-->4.  <!--[endif]-->DES的核心——加密函數 <!--[if !vml]--><!--[endif]-->

加密函數的加密過程也可以通過三步走:

       第一步,將R0通過位選擇函數E置換,其實這是一個擴充的置換,因為R0本身是32位的(這點先記住就行了,後一篇文章會說),而產生的子密鑰是48位的,因此需要擴充一下,方能按位元運算。

       第二步,將擴充完的R0和子密鑰K1進行模2加運算,得到48位的一個串,把這個串從左至右分為8組,每組6個字元。這裡設8組分別為B1,B2,B3,B4,B5,B6,B7,B8。其中Bj=b1b2b3b4b5b6。

       第三步,通過S盒來收縮,把每組中的b1b6放一塊,換算為十進位,b2b3b4b5放一塊,也換算為十進位。b1b6代表S盒中的行標,b2b3b4b5代表列標。比如說B1=011111,那麼b1b6就等於十進位的1,b2b3b4b5等於十進位的15,也就是對應表中的S1塊中的第1行(注意不是0行),15列,也就是8,然後把8變為二進位1000。這就完成了S盒收縮變換,然後通過S盒輸出的就是32位的一個串。

<!--[endif]-->

              第四步,把32位的串經過置換函數P的置換得到的結果就是這個核心函數的產物了。

 

       

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.