日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

信息安全密码学:DES算法的核心 E盒、S盒、P盒

發布時間:2023/12/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 信息安全密码学:DES算法的核心 E盒、S盒、P盒 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

加密密鑰等于脫密密鑰,或者由一個可以輕易的計算出另一個的密碼體制,稱為單密鑰密碼體制,亦或稱為對稱密碼體制或傳統密碼體制。其最具代表意義的當然屬于DES密碼體制了。

1、DES的設計背景

  • 1973年5月 NBS(美國國家標準局)發布通告,征集一種加密算法
  • 1974年8月 收到了IBM公司提交的算法
  • 1976年11月 被推薦為聯邦標準
  • 1977年1月 發布
  • 服役了20年

2、DES加密算法

迭代型分組算法分組長度/密鑰長度:64bit有效密鑰長度:56bit(8bit奇偶校驗位)迭代圈數:16圈圈密鑰長度:48bit(即16圈中每一圈所要用到的密鑰位數(bit))\color{red}迭代型分組算法\\\;\\\color{brown}分組長度/密鑰長度:\color{red}64bit\\ \color{brown}有效密鑰長度:\color{red}56bit(8bit奇偶校驗位)\\ \color{brown}迭代圈數:\color{red}16圈\\ \color{brown}圈密鑰長度:\color{red}48bit(即16圈中每一圈所要用到的密鑰位數(bit))/64bit56bit(8bit)1648bit(16(bit))

形式化表達為:DES(M)=IP?1°T(16)°T(15)°...°T(1)°IP(m)(由后向前運算)DES(M)=IP^{-1}\circ T(16)\circ T(15)\circ...\circ T(1)\circ IP(m)(由后向前運算)DES(M)=IP?1°T(16)°T(15)°...°T(1)°IP(m)
IP是初始置換,IP-1是初始逆置換,T表示16組迭代圈函數。

圖形化表達:

#mermaid-svg-aWkJIWXAooKcdspR .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-aWkJIWXAooKcdspR .label text{fill:#333}#mermaid-svg-aWkJIWXAooKcdspR .node rect,#mermaid-svg-aWkJIWXAooKcdspR .node circle,#mermaid-svg-aWkJIWXAooKcdspR .node ellipse,#mermaid-svg-aWkJIWXAooKcdspR .node polygon,#mermaid-svg-aWkJIWXAooKcdspR .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-aWkJIWXAooKcdspR .node .label{text-align:center;fill:#333}#mermaid-svg-aWkJIWXAooKcdspR .node.clickable{cursor:pointer}#mermaid-svg-aWkJIWXAooKcdspR .arrowheadPath{fill:#333}#mermaid-svg-aWkJIWXAooKcdspR .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-aWkJIWXAooKcdspR .flowchart-link{stroke:#333;fill:none}#mermaid-svg-aWkJIWXAooKcdspR .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-aWkJIWXAooKcdspR .edgeLabel rect{opacity:0.9}#mermaid-svg-aWkJIWXAooKcdspR .edgeLabel span{color:#333}#mermaid-svg-aWkJIWXAooKcdspR .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-aWkJIWXAooKcdspR .cluster text{fill:#333}#mermaid-svg-aWkJIWXAooKcdspR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-aWkJIWXAooKcdspR .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-aWkJIWXAooKcdspR text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-aWkJIWXAooKcdspR .actor-line{stroke:grey}#mermaid-svg-aWkJIWXAooKcdspR .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-aWkJIWXAooKcdspR .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-aWkJIWXAooKcdspR #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-aWkJIWXAooKcdspR .sequenceNumber{fill:#fff}#mermaid-svg-aWkJIWXAooKcdspR #sequencenumber{fill:#333}#mermaid-svg-aWkJIWXAooKcdspR #crosshead path{fill:#333;stroke:#333}#mermaid-svg-aWkJIWXAooKcdspR .messageText{fill:#333;stroke:#333}#mermaid-svg-aWkJIWXAooKcdspR .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-aWkJIWXAooKcdspR .labelText,#mermaid-svg-aWkJIWXAooKcdspR .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-aWkJIWXAooKcdspR .loopText,#mermaid-svg-aWkJIWXAooKcdspR .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-aWkJIWXAooKcdspR .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-aWkJIWXAooKcdspR .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-aWkJIWXAooKcdspR .noteText,#mermaid-svg-aWkJIWXAooKcdspR .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-aWkJIWXAooKcdspR .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-aWkJIWXAooKcdspR .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-aWkJIWXAooKcdspR .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-aWkJIWXAooKcdspR .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aWkJIWXAooKcdspR .section{stroke:none;opacity:0.2}#mermaid-svg-aWkJIWXAooKcdspR .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-aWkJIWXAooKcdspR .section2{fill:#fff400}#mermaid-svg-aWkJIWXAooKcdspR .section1,#mermaid-svg-aWkJIWXAooKcdspR .section3{fill:#fff;opacity:0.2}#mermaid-svg-aWkJIWXAooKcdspR .sectionTitle0{fill:#333}#mermaid-svg-aWkJIWXAooKcdspR .sectionTitle1{fill:#333}#mermaid-svg-aWkJIWXAooKcdspR .sectionTitle2{fill:#333}#mermaid-svg-aWkJIWXAooKcdspR .sectionTitle3{fill:#333}#mermaid-svg-aWkJIWXAooKcdspR .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aWkJIWXAooKcdspR .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-aWkJIWXAooKcdspR .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aWkJIWXAooKcdspR .grid path{stroke-width:0}#mermaid-svg-aWkJIWXAooKcdspR .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-aWkJIWXAooKcdspR .task{stroke-width:2}#mermaid-svg-aWkJIWXAooKcdspR .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aWkJIWXAooKcdspR .taskText:not([font-size]){font-size:11px}#mermaid-svg-aWkJIWXAooKcdspR .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aWkJIWXAooKcdspR .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-aWkJIWXAooKcdspR .task.clickable{cursor:pointer}#mermaid-svg-aWkJIWXAooKcdspR .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-aWkJIWXAooKcdspR .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-aWkJIWXAooKcdspR .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-aWkJIWXAooKcdspR .taskText0,#mermaid-svg-aWkJIWXAooKcdspR .taskText1,#mermaid-svg-aWkJIWXAooKcdspR .taskText2,#mermaid-svg-aWkJIWXAooKcdspR .taskText3{fill:#fff}#mermaid-svg-aWkJIWXAooKcdspR .task0,#mermaid-svg-aWkJIWXAooKcdspR .task1,#mermaid-svg-aWkJIWXAooKcdspR .task2,#mermaid-svg-aWkJIWXAooKcdspR .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-aWkJIWXAooKcdspR .taskTextOutside0,#mermaid-svg-aWkJIWXAooKcdspR .taskTextOutside2{fill:#000}#mermaid-svg-aWkJIWXAooKcdspR .taskTextOutside1,#mermaid-svg-aWkJIWXAooKcdspR .taskTextOutside3{fill:#000}#mermaid-svg-aWkJIWXAooKcdspR .active0,#mermaid-svg-aWkJIWXAooKcdspR .active1,#mermaid-svg-aWkJIWXAooKcdspR .active2,#mermaid-svg-aWkJIWXAooKcdspR .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-aWkJIWXAooKcdspR .activeText0,#mermaid-svg-aWkJIWXAooKcdspR .activeText1,#mermaid-svg-aWkJIWXAooKcdspR .activeText2,#mermaid-svg-aWkJIWXAooKcdspR .activeText3{fill:#000 !important}#mermaid-svg-aWkJIWXAooKcdspR .done0,#mermaid-svg-aWkJIWXAooKcdspR .done1,#mermaid-svg-aWkJIWXAooKcdspR .done2,#mermaid-svg-aWkJIWXAooKcdspR .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-aWkJIWXAooKcdspR .doneText0,#mermaid-svg-aWkJIWXAooKcdspR .doneText1,#mermaid-svg-aWkJIWXAooKcdspR .doneText2,#mermaid-svg-aWkJIWXAooKcdspR .doneText3{fill:#000 !important}#mermaid-svg-aWkJIWXAooKcdspR .crit0,#mermaid-svg-aWkJIWXAooKcdspR .crit1,#mermaid-svg-aWkJIWXAooKcdspR .crit2,#mermaid-svg-aWkJIWXAooKcdspR .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-aWkJIWXAooKcdspR .activeCrit0,#mermaid-svg-aWkJIWXAooKcdspR .activeCrit1,#mermaid-svg-aWkJIWXAooKcdspR .activeCrit2,#mermaid-svg-aWkJIWXAooKcdspR .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-aWkJIWXAooKcdspR .doneCrit0,#mermaid-svg-aWkJIWXAooKcdspR .doneCrit1,#mermaid-svg-aWkJIWXAooKcdspR .doneCrit2,#mermaid-svg-aWkJIWXAooKcdspR .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-aWkJIWXAooKcdspR .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-aWkJIWXAooKcdspR .milestoneText{font-style:italic}#mermaid-svg-aWkJIWXAooKcdspR .doneCritText0,#mermaid-svg-aWkJIWXAooKcdspR .doneCritText1,#mermaid-svg-aWkJIWXAooKcdspR .doneCritText2,#mermaid-svg-aWkJIWXAooKcdspR .doneCritText3{fill:#000 !important}#mermaid-svg-aWkJIWXAooKcdspR .activeCritText0,#mermaid-svg-aWkJIWXAooKcdspR .activeCritText1,#mermaid-svg-aWkJIWXAooKcdspR .activeCritText2,#mermaid-svg-aWkJIWXAooKcdspR .activeCritText3{fill:#000 !important}#mermaid-svg-aWkJIWXAooKcdspR .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aWkJIWXAooKcdspR g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-aWkJIWXAooKcdspR g.classGroup text .title{font-weight:bolder}#mermaid-svg-aWkJIWXAooKcdspR g.clickable{cursor:pointer}#mermaid-svg-aWkJIWXAooKcdspR g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-aWkJIWXAooKcdspR g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-aWkJIWXAooKcdspR .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-aWkJIWXAooKcdspR .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-aWkJIWXAooKcdspR .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-aWkJIWXAooKcdspR .dashed-line{stroke-dasharray:3}#mermaid-svg-aWkJIWXAooKcdspR #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-aWkJIWXAooKcdspR #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-aWkJIWXAooKcdspR #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-aWkJIWXAooKcdspR #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-aWkJIWXAooKcdspR #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-aWkJIWXAooKcdspR #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-aWkJIWXAooKcdspR #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-aWkJIWXAooKcdspR #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-aWkJIWXAooKcdspR .commit-id,#mermaid-svg-aWkJIWXAooKcdspR .commit-msg,#mermaid-svg-aWkJIWXAooKcdspR .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aWkJIWXAooKcdspR .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aWkJIWXAooKcdspR .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aWkJIWXAooKcdspR g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aWkJIWXAooKcdspR g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-aWkJIWXAooKcdspR g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-aWkJIWXAooKcdspR g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-aWkJIWXAooKcdspR g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-aWkJIWXAooKcdspR g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-aWkJIWXAooKcdspR .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-aWkJIWXAooKcdspR .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-aWkJIWXAooKcdspR .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-aWkJIWXAooKcdspR .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-aWkJIWXAooKcdspR .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-aWkJIWXAooKcdspR .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-aWkJIWXAooKcdspR .edgeLabel text{fill:#333}#mermaid-svg-aWkJIWXAooKcdspR .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-aWkJIWXAooKcdspR .node circle.state-start{fill:black;stroke:black}#mermaid-svg-aWkJIWXAooKcdspR .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-aWkJIWXAooKcdspR #statediagram-barbEnd{fill:#9370db}#mermaid-svg-aWkJIWXAooKcdspR .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-aWkJIWXAooKcdspR .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-aWkJIWXAooKcdspR .statediagram-state .divider{stroke:#9370db}#mermaid-svg-aWkJIWXAooKcdspR .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-aWkJIWXAooKcdspR .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-aWkJIWXAooKcdspR .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-aWkJIWXAooKcdspR .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-aWkJIWXAooKcdspR .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-aWkJIWXAooKcdspR .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-aWkJIWXAooKcdspR .note-edge{stroke-dasharray:5}#mermaid-svg-aWkJIWXAooKcdspR .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-aWkJIWXAooKcdspR .error-icon{fill:#522}#mermaid-svg-aWkJIWXAooKcdspR .error-text{fill:#522;stroke:#522}#mermaid-svg-aWkJIWXAooKcdspR .edge-thickness-normal{stroke-width:2px}#mermaid-svg-aWkJIWXAooKcdspR .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-aWkJIWXAooKcdspR .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-aWkJIWXAooKcdspR .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-aWkJIWXAooKcdspR .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-aWkJIWXAooKcdspR .marker{fill:#333}#mermaid-svg-aWkJIWXAooKcdspR .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-aWkJIWXAooKcdspR {color: rgba(0, 0, 0, 0.75);font: ;}64bit64bit64bit64bit明文m初始置換<IP>圈1圈2圈3....圈16初始逆置換密文c

前15圈的算法結構相同,16圈中每一圈都有不同的密鑰值\color{gray}前15圈的算法結構相同,16圈中每一圈都有不同的密鑰值1516


由上圖可知,前15圈模2加(亦或)后,左右進行了互換,而在第16圈則沒有。初始置換后,將64bit數據等分為2份32bit分別給予了L0(Left)和R0(Right)由上圖可知,前15圈模2加(亦或)后,左右進行了互換,而在第16圈則沒有。\\ 初始置換后,將64bit數據等分為2份32bit 分別給予了L_0(Left) 和 R_0(Right)1521664bit232bitL0?LeftR0?Right

2.1初始置換IP與逆初始置換IP?12.1\;初始置換IP與逆初始置換IP^{-1}2.1IPIP?1

若某一位經過初始置換又經過了逆初始置換,則其位置并沒有發生改變。即,IP和IP-1互逆

如IP轉換表中,第8位對應了數字2,即表示對應著第2位;
而在IP-1轉換表中,第二位對應了數字8,即表示對應著第8位;
此時正好又將位置轉換了回去。之前有提到過置換是一種古典密碼\color{gray}之前有提到過置換是一種古典密碼 置換密碼.
所以在設計置換表時可以參照此原則。

2.2圈函數2.2\;圈函數2.2

前15圈


右上角的Li?1L_{i-1}Li?1?應該是Ri?1R_{i-1}Ri?1?

  • 本一圈的右部Ri?1R_{i-1}Ri?1? 直接作為下一圈的左部LiL_{i}Li? 進行后續的運算
  • 本一圈的(左部Li?1L_{i-1}Li?1?) 要與(經過 f函數f函數fRi?1R_{i-1}Ri?1? 和本圈密鑰kik_{i}ki? 所得到的結果,f(Ri?1,ki)f(R_{i-1},k_{i})f(Ri?1?,ki?))進行模二加(亦或)運算之后作為下一圈的右部RiR_{i}Ri? 進行后續的運算

表達式為:(左部,右部)=(Li,Ri)=(Ri,Li?1?f(Ri?1,ki))?模2加:0+0=0;0+1=1+0=1;1+1=0f(Ri?1,ki):表示在密鑰ki的影響下Ri?1的值。\:\\\color {red}表達式為:(左部,右部)=(L_{i},R_{i})=(R_{i},L_{i-1} \bigoplus f(R_{i-1},k_{i}))\\\;\\\color{blue}\bigoplus 模2加:0+0=0;0+1=1+0=1;1+1=0\\f(R_{i-1},k_{i}):表示在密鑰k_i的影響下R_{i-1}的值。()=(Li?,Ri?)=(Ri?,Li?1??f(Ri?1?,ki?))?20+0=00+1=1+0=11+1=0f(Ri?1?,ki?):ki?Ri?1?

第16圈


(左部,右部)=(L16,R16)=(L15?1?f(k16,R15?1),R15)\color{red}(左部,右部)=(L_{16},R_{16})=(L_{15-1} \bigoplus f(k_{16},R_{15-1}),R_{15})()=(L16?,R16?)=(L15?1??f(k16?,R15?1?),R15?)
\;
同前15圈相比,其左右部,一定意義上講,沒有發生交換。

  • 這里的ki是由64bit密鑰產生的子密鑰,ki是48bit。DES的核心在于f(Ri?1,ki)函數的功能。f函數是將32bit的輸入轉化為32bit的輸出。其中涉及到了擴展和壓縮。擴展是為了能和ki進行模2加,壓縮是為了最后要輸出32bit\color{gray}這里的k_i是由64bit密鑰產生的子密鑰,k_i是48bit。\\ {\color{red}DES的核心在于f(R_{i-1},k_{i})函數的功能。}f函數是將32bit的輸入轉化為32bit的輸出。\\ 其中涉及到了擴展和壓縮。擴展是為了能和k_i進行模2加,壓縮是為了最后要輸出32bitki?64bitki?48bitDESf(Ri?1?,ki?)f32bit32bitki?232bit

2.3f函數的構造2.3\:f函數的構造2.3f

f函數的內部構造:E盒擴展;E盒擴展后的值與圈密鑰k進行模2加;(亦或運算)S盒轉換;(分為8個部分)P盒變換;\color{gray}f函數的內部構造:\\\color{blue}\;E盒擴展;\\E盒擴展后的值與圈密鑰k進行模2加;(亦或運算)\\\;S盒轉換;(分為8個部分)\\\;P盒變換;f:EEk2S8P
圖形化表示:圖形化表示:

#mermaid-svg-LEJCyLHFFCHvJps3 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .label text{fill:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .node rect,#mermaid-svg-LEJCyLHFFCHvJps3 .node circle,#mermaid-svg-LEJCyLHFFCHvJps3 .node ellipse,#mermaid-svg-LEJCyLHFFCHvJps3 .node polygon,#mermaid-svg-LEJCyLHFFCHvJps3 .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-LEJCyLHFFCHvJps3 .node .label{text-align:center;fill:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .node.clickable{cursor:pointer}#mermaid-svg-LEJCyLHFFCHvJps3 .arrowheadPath{fill:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-LEJCyLHFFCHvJps3 .flowchart-link{stroke:#333;fill:none}#mermaid-svg-LEJCyLHFFCHvJps3 .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-LEJCyLHFFCHvJps3 .edgeLabel rect{opacity:0.9}#mermaid-svg-LEJCyLHFFCHvJps3 .edgeLabel span{color:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-LEJCyLHFFCHvJps3 .cluster text{fill:#333}#mermaid-svg-LEJCyLHFFCHvJps3 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-LEJCyLHFFCHvJps3 .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-LEJCyLHFFCHvJps3 text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-LEJCyLHFFCHvJps3 .actor-line{stroke:grey}#mermaid-svg-LEJCyLHFFCHvJps3 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-LEJCyLHFFCHvJps3 #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .sequenceNumber{fill:#fff}#mermaid-svg-LEJCyLHFFCHvJps3 #sequencenumber{fill:#333}#mermaid-svg-LEJCyLHFFCHvJps3 #crosshead path{fill:#333;stroke:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .messageText{fill:#333;stroke:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-LEJCyLHFFCHvJps3 .labelText,#mermaid-svg-LEJCyLHFFCHvJps3 .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-LEJCyLHFFCHvJps3 .loopText,#mermaid-svg-LEJCyLHFFCHvJps3 .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-LEJCyLHFFCHvJps3 .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-LEJCyLHFFCHvJps3 .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-LEJCyLHFFCHvJps3 .noteText,#mermaid-svg-LEJCyLHFFCHvJps3 .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-LEJCyLHFFCHvJps3 .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-LEJCyLHFFCHvJps3 .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-LEJCyLHFFCHvJps3 .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-LEJCyLHFFCHvJps3 .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LEJCyLHFFCHvJps3 .section{stroke:none;opacity:0.2}#mermaid-svg-LEJCyLHFFCHvJps3 .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-LEJCyLHFFCHvJps3 .section2{fill:#fff400}#mermaid-svg-LEJCyLHFFCHvJps3 .section1,#mermaid-svg-LEJCyLHFFCHvJps3 .section3{fill:#fff;opacity:0.2}#mermaid-svg-LEJCyLHFFCHvJps3 .sectionTitle0{fill:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .sectionTitle1{fill:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .sectionTitle2{fill:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .sectionTitle3{fill:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LEJCyLHFFCHvJps3 .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-LEJCyLHFFCHvJps3 .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LEJCyLHFFCHvJps3 .grid path{stroke-width:0}#mermaid-svg-LEJCyLHFFCHvJps3 .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-LEJCyLHFFCHvJps3 .task{stroke-width:2}#mermaid-svg-LEJCyLHFFCHvJps3 .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LEJCyLHFFCHvJps3 .taskText:not([font-size]){font-size:11px}#mermaid-svg-LEJCyLHFFCHvJps3 .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LEJCyLHFFCHvJps3 .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-LEJCyLHFFCHvJps3 .task.clickable{cursor:pointer}#mermaid-svg-LEJCyLHFFCHvJps3 .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-LEJCyLHFFCHvJps3 .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-LEJCyLHFFCHvJps3 .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-LEJCyLHFFCHvJps3 .taskText0,#mermaid-svg-LEJCyLHFFCHvJps3 .taskText1,#mermaid-svg-LEJCyLHFFCHvJps3 .taskText2,#mermaid-svg-LEJCyLHFFCHvJps3 .taskText3{fill:#fff}#mermaid-svg-LEJCyLHFFCHvJps3 .task0,#mermaid-svg-LEJCyLHFFCHvJps3 .task1,#mermaid-svg-LEJCyLHFFCHvJps3 .task2,#mermaid-svg-LEJCyLHFFCHvJps3 .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-LEJCyLHFFCHvJps3 .taskTextOutside0,#mermaid-svg-LEJCyLHFFCHvJps3 .taskTextOutside2{fill:#000}#mermaid-svg-LEJCyLHFFCHvJps3 .taskTextOutside1,#mermaid-svg-LEJCyLHFFCHvJps3 .taskTextOutside3{fill:#000}#mermaid-svg-LEJCyLHFFCHvJps3 .active0,#mermaid-svg-LEJCyLHFFCHvJps3 .active1,#mermaid-svg-LEJCyLHFFCHvJps3 .active2,#mermaid-svg-LEJCyLHFFCHvJps3 .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-LEJCyLHFFCHvJps3 .activeText0,#mermaid-svg-LEJCyLHFFCHvJps3 .activeText1,#mermaid-svg-LEJCyLHFFCHvJps3 .activeText2,#mermaid-svg-LEJCyLHFFCHvJps3 .activeText3{fill:#000 !important}#mermaid-svg-LEJCyLHFFCHvJps3 .done0,#mermaid-svg-LEJCyLHFFCHvJps3 .done1,#mermaid-svg-LEJCyLHFFCHvJps3 .done2,#mermaid-svg-LEJCyLHFFCHvJps3 .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-LEJCyLHFFCHvJps3 .doneText0,#mermaid-svg-LEJCyLHFFCHvJps3 .doneText1,#mermaid-svg-LEJCyLHFFCHvJps3 .doneText2,#mermaid-svg-LEJCyLHFFCHvJps3 .doneText3{fill:#000 !important}#mermaid-svg-LEJCyLHFFCHvJps3 .crit0,#mermaid-svg-LEJCyLHFFCHvJps3 .crit1,#mermaid-svg-LEJCyLHFFCHvJps3 .crit2,#mermaid-svg-LEJCyLHFFCHvJps3 .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-LEJCyLHFFCHvJps3 .activeCrit0,#mermaid-svg-LEJCyLHFFCHvJps3 .activeCrit1,#mermaid-svg-LEJCyLHFFCHvJps3 .activeCrit2,#mermaid-svg-LEJCyLHFFCHvJps3 .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-LEJCyLHFFCHvJps3 .doneCrit0,#mermaid-svg-LEJCyLHFFCHvJps3 .doneCrit1,#mermaid-svg-LEJCyLHFFCHvJps3 .doneCrit2,#mermaid-svg-LEJCyLHFFCHvJps3 .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-LEJCyLHFFCHvJps3 .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-LEJCyLHFFCHvJps3 .milestoneText{font-style:italic}#mermaid-svg-LEJCyLHFFCHvJps3 .doneCritText0,#mermaid-svg-LEJCyLHFFCHvJps3 .doneCritText1,#mermaid-svg-LEJCyLHFFCHvJps3 .doneCritText2,#mermaid-svg-LEJCyLHFFCHvJps3 .doneCritText3{fill:#000 !important}#mermaid-svg-LEJCyLHFFCHvJps3 .activeCritText0,#mermaid-svg-LEJCyLHFFCHvJps3 .activeCritText1,#mermaid-svg-LEJCyLHFFCHvJps3 .activeCritText2,#mermaid-svg-LEJCyLHFFCHvJps3 .activeCritText3{fill:#000 !important}#mermaid-svg-LEJCyLHFFCHvJps3 .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LEJCyLHFFCHvJps3 g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-LEJCyLHFFCHvJps3 g.classGroup text .title{font-weight:bolder}#mermaid-svg-LEJCyLHFFCHvJps3 g.clickable{cursor:pointer}#mermaid-svg-LEJCyLHFFCHvJps3 g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-LEJCyLHFFCHvJps3 g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-LEJCyLHFFCHvJps3 .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-LEJCyLHFFCHvJps3 .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-LEJCyLHFFCHvJps3 .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-LEJCyLHFFCHvJps3 .dashed-line{stroke-dasharray:3}#mermaid-svg-LEJCyLHFFCHvJps3 #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-LEJCyLHFFCHvJps3 #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-LEJCyLHFFCHvJps3 #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-LEJCyLHFFCHvJps3 #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-LEJCyLHFFCHvJps3 #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-LEJCyLHFFCHvJps3 #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-LEJCyLHFFCHvJps3 #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-LEJCyLHFFCHvJps3 #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-LEJCyLHFFCHvJps3 .commit-id,#mermaid-svg-LEJCyLHFFCHvJps3 .commit-msg,#mermaid-svg-LEJCyLHFFCHvJps3 .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LEJCyLHFFCHvJps3 .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LEJCyLHFFCHvJps3 .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LEJCyLHFFCHvJps3 g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LEJCyLHFFCHvJps3 g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-LEJCyLHFFCHvJps3 g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-LEJCyLHFFCHvJps3 g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-LEJCyLHFFCHvJps3 g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-LEJCyLHFFCHvJps3 g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-LEJCyLHFFCHvJps3 .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-LEJCyLHFFCHvJps3 .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-LEJCyLHFFCHvJps3 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-LEJCyLHFFCHvJps3 .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-LEJCyLHFFCHvJps3 .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-LEJCyLHFFCHvJps3 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-LEJCyLHFFCHvJps3 .edgeLabel text{fill:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-LEJCyLHFFCHvJps3 .node circle.state-start{fill:black;stroke:black}#mermaid-svg-LEJCyLHFFCHvJps3 .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-LEJCyLHFFCHvJps3 #statediagram-barbEnd{fill:#9370db}#mermaid-svg-LEJCyLHFFCHvJps3 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-LEJCyLHFFCHvJps3 .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-LEJCyLHFFCHvJps3 .statediagram-state .divider{stroke:#9370db}#mermaid-svg-LEJCyLHFFCHvJps3 .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-LEJCyLHFFCHvJps3 .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-LEJCyLHFFCHvJps3 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-LEJCyLHFFCHvJps3 .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-LEJCyLHFFCHvJps3 .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-LEJCyLHFFCHvJps3 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-LEJCyLHFFCHvJps3 .note-edge{stroke-dasharray:5}#mermaid-svg-LEJCyLHFFCHvJps3 .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-LEJCyLHFFCHvJps3 .error-icon{fill:#522}#mermaid-svg-LEJCyLHFFCHvJps3 .error-text{fill:#522;stroke:#522}#mermaid-svg-LEJCyLHFFCHvJps3 .edge-thickness-normal{stroke-width:2px}#mermaid-svg-LEJCyLHFFCHvJps3 .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-LEJCyLHFFCHvJps3 .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-LEJCyLHFFCHvJps3 .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-LEJCyLHFFCHvJps3 .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-LEJCyLHFFCHvJps3 .marker{fill:#333}#mermaid-svg-LEJCyLHFFCHvJps3 .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-LEJCyLHFFCHvJps3 {color: rgba(0, 0, 0, 0.75);font: ;}32bit48bit48bit6bit6bit6bit6bit6bit6bit6bit6bit4bit4bit4bit4bit4bit4bit4bit4bitR<32bit>E+圈密鑰kS1S2S3S4S5S6S7S8P最后得到的32bit數據

E盒擴展:\color{blue}E盒擴展:E

將32bit擴展到48bit,先將32bit的字符分為8組,每一組的前后,分別添加上一個字符和下一個字符:
將12345678910111213141516......29303132?32123454567898910111213121314151617............28293031321將 \begin{matrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 &11 & 12 \\ 13 & 14 &15 & 16 \\ &...... \\ 29 & 30 &31 & 32 \\ \end{matrix} \implies \begin{matrix} {\color{red}32} & 1 & 2 & 3 & 4 & {\color{red}5}\\ {\color{red}4} & 5 & 6 & 7 & 8 & {\color{red}9} \\ {\color{red}8} & 9 & 10 &11 & 12 & {\color{red}13} \\ {\color{red}12} & 13 & 14 &15 & 16 & {\color{red}17} \\ {\color{red}...} & &...... & &&{\color{red}...}\\ {\color{red}28} & 29 & 30 &31 & 32 & {\color{red}1} \\ \end{matrix} 1591329?261014......30?37111531?48121632??324812...28?1591329?261014......30?37111531?48121632?591317...1?
如,在下標為1的字符前插入上一個字符。即,下標為32的字符;在下標為4的字符后插入下一個字符。即,下標為5的字符;在下標為32的字符后插入下一個字符。即,下標為1的字符;按照此規律擴展16bit。如,\\\color{blue}在下標為1的字符前插入上一個字符。即,下標為32的字符;\\在下標為4的字符后插入下一個字符。即,下標為5的字符;\\在下標為32的字符后插入下一個字符。即,下標為1的字符;\\按照此規律擴展16bit。1324532116bit

模2加\color{blue}模2加2

就令經過E盒擴展后的48個2進制位逐一與密鑰的48bit進行亦或運算。

S盒代替\color{blue}S盒代替S

將48bit轉換為32bit

S盒是唯一的非線性變換(非數學變換),其是DES中f函數的核心,S盒的好壞決定了該算法。S盒是唯一的非線性變換(非數學變換),其是DES中f函數的核心,S盒的好壞決定了該算法。SDESfS

該S盒分為了8個子盒,對應著8張表(Si),每個表是4行16列,每個子盒的輸入為6bit,輸出為4bit該S盒分為了8個子盒,對應著8張表(S_i),每個表是4行16列,每個子盒的輸入為6bit,輸出為4bitS88(Si?)4166bit4bit

先將輸入的48bit分為8組6bit的數據對應于8個子盒,
假定輸入Si盒的6個bit為b1b2b3b4b5b6(這里每一個b都是一個二進制位)另b1b6為十進制的n,令b2b3b4b5為十進制的m,在設計的表中找出對應的n行m列對應的數字,并轉換為2進制作為本si盒的輸出下面有栗子:假定輸入S_i盒的6個bit為b_1b_2b_3b_4b_5b_6(這里每一個b都是一個二進制位)\\另b_1b_6為十進制的n,令b_2b_3b_4b_5為十進制的m,\\在設計的表中找出對應的n行m列對應的數字,并轉換為2進制作為本s_i盒的輸出\\{\color{red}下面有栗子:}Si?6bitb1?b2?b3?b4?b5?b6?bb1?b6?nb2?b3?b4?b5?mnm2si?

栗子:如,向s1盒中輸入的6bit數為:101101b1b6為11,即十進制的3b2b3b4b5為0110,即十進制的6在s1中,第3行6列對應著數字1所以最后的輸出為00018組中每一個都會得到4bit的數據,最終會得到32bit的數據{\color{red}栗子:}如,向s_1盒中輸入的6bit數為:101101\\b_1b_6為11,即十進制的3\\b_2b_3b_4b_5為0110,即十進制的6\\在s_1中,第3行6列對應著數字1\\所以最后的輸出為0001\\{\color{gray}8組中每一個都會得到4bit的數據,最終會得到32bit的數據}s1?6bit101101b1?b6?113b2?b3?b4?b5?01106s1?361000184bit32bit
S盒作為DES的心臟,DES靠它實現非線性變換\color{red}S盒作為DES的心臟,DES靠它實現非線性變換SDESDES

P盒轉換:\color{blue}P盒轉換:P:

其本質是一種置換
\;
如原來的第1個bit被置換到第16個bit
該表格滿足分組擴散與混亂原則。

3、密鑰生成算法

加密的基本流程已經介紹完畢,那么如何將64bit的初始密鑰生成16組48bit的圈密鑰(子密鑰)供每一圈使用呢?

圖形化表達為:圖形化表達為:


PC?1為,置換選擇算法1(由64位篩選出56位);\color{blue}{\color{red}PC-1}為,置換選擇算法1(由64位篩選出56位);PC?116456
C和D是兩個寄存器;\color{blue}{\color{red}C和D}是兩個寄存器;CD
LS為移位運算(循環左移)\color{blue}{\color{red}LS}為移位運算(循環左移)LS
PC?2為,置換選擇算法2(由58位選出48位的圈密鑰)\color{blue}{\color{red}PC-2}為,置換選擇算法2(由58位選出48位的圈密鑰)PC?225848

置換選擇1(PC?1)\color{blue}置換選擇1(PC-1)1PC?1

  • 拋去每個字節的最高位,即,第8,16,24,32,40,48,56,64位,只選擇剩余的56位,被拋去的字節本來就是奇偶校驗位。(用于驗證完整性)
  • 將剩余的比特數,按照一定的規則,進行相應的置換。
  • 置換后,分別放在兩個寄存器C和D中
  • 置換規則:

    如,將原來的第57bit換到第1位。置換后的前28bit放在C寄存器中,其余的放在D寄存器中。

    移位(LS)【兩個28位密鑰的寄存器循環左移】\color{blue}移位(LS)【兩個28位密鑰的寄存器循環左移】LS28

    規則:第1,2,9,16圈左移1位;其余都左移2位。{\color{red}規則:}\\第1,2,9,16圈左移1位;\\其余都左移2位。1291612

    LS1、LS2、LS9、LS16左移1位,其余LSi左移2位LS_1、LS_2、LS_9、LS_{16} 左移1位,其余LS_i左移2位LS1?LS2?LS9?LS16?1LSi?2

    最后16圈左移結束后,移位數正好等于28\color{gray}最后16圈左移結束后,移位數正好等于281628

    置換選擇(PC?2)【由56位得到48位】\color{blue}置換選擇(PC-2)【由56位得到48位】PC?25648


    按照此規則進行置換,同時去除了8位

    4、脫密算法

    DES的解密過程和DES加密完全類似,只不過將16圈的子密鑰序列顛倒了一下,即,第一圈用k16k_{16}k16? 最后一圈用k1k_{1}k1?
    形式化表達為:DES?1=IP?1°T(1)°T(2)°...°T(16)°IP(c)(由后向前運算)形式化表達為:\\\color{red}DES^{-1}=IP^{-1}\circ T(1)\circ T(2)\circ...\circ T(16)\circ IP(c) (由后向前運算)DES?1=IP?1°T(1)°T(2)°...°T(16)°IP(c)

    所以脫密的算法就在于圈密鑰如何進行計算的

    圈函數的分解:\color{blue}圈函數的分解:

    一般地,圈函數可以表達為:(左,右)=(x,y)=(y,x?f(y,k))(左,右)=(x,y)=(y,x\bigoplus f(y,k))()=(x,y)=(y,x?f(y,k)),第16圈顯然不能用這個表示。
    可將其看作兩部分,

  • (x,y)→(x?f(y,k),y)(x,y)\to(x\bigoplus f(y,k),y)(x,y)(x?f(y,k)y),稱為對合交換1。(Fesihel函數)
  • (x?f(y,k),y)→(y,x?f(y,k))(x\bigoplus f(y,k),y)\to(y,x\bigoplus f(y,k))(x?f(y,k)y)(y,x?f(y,k)),稱為對合變換2。(左右塊交換)【顯然,第16圈并沒有進行這一步驟】
  • 步驟一樣,為了方便表示,我們將圈迭代看成3圈,最后一圈同第16圈一樣,僅有對合變換1\color{gray}步驟一樣,為了方便表示,我們將圈迭代看成3圈,最后一圈同第16圈一樣,僅有對合變換1便316,1

    #mermaid-svg-HCiVzkgu8ZexoO9L .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .label text{fill:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .node rect,#mermaid-svg-HCiVzkgu8ZexoO9L .node circle,#mermaid-svg-HCiVzkgu8ZexoO9L .node ellipse,#mermaid-svg-HCiVzkgu8ZexoO9L .node polygon,#mermaid-svg-HCiVzkgu8ZexoO9L .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-HCiVzkgu8ZexoO9L .node .label{text-align:center;fill:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .node.clickable{cursor:pointer}#mermaid-svg-HCiVzkgu8ZexoO9L .arrowheadPath{fill:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-HCiVzkgu8ZexoO9L .flowchart-link{stroke:#333;fill:none}#mermaid-svg-HCiVzkgu8ZexoO9L .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-HCiVzkgu8ZexoO9L .edgeLabel rect{opacity:0.9}#mermaid-svg-HCiVzkgu8ZexoO9L .edgeLabel span{color:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-HCiVzkgu8ZexoO9L .cluster text{fill:#333}#mermaid-svg-HCiVzkgu8ZexoO9L div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-HCiVzkgu8ZexoO9L .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-HCiVzkgu8ZexoO9L text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-HCiVzkgu8ZexoO9L .actor-line{stroke:grey}#mermaid-svg-HCiVzkgu8ZexoO9L .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-HCiVzkgu8ZexoO9L #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .sequenceNumber{fill:#fff}#mermaid-svg-HCiVzkgu8ZexoO9L #sequencenumber{fill:#333}#mermaid-svg-HCiVzkgu8ZexoO9L #crosshead path{fill:#333;stroke:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .messageText{fill:#333;stroke:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-HCiVzkgu8ZexoO9L .labelText,#mermaid-svg-HCiVzkgu8ZexoO9L .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-HCiVzkgu8ZexoO9L .loopText,#mermaid-svg-HCiVzkgu8ZexoO9L .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-HCiVzkgu8ZexoO9L .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-HCiVzkgu8ZexoO9L .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-HCiVzkgu8ZexoO9L .noteText,#mermaid-svg-HCiVzkgu8ZexoO9L .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-HCiVzkgu8ZexoO9L .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-HCiVzkgu8ZexoO9L .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-HCiVzkgu8ZexoO9L .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-HCiVzkgu8ZexoO9L .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-HCiVzkgu8ZexoO9L .section{stroke:none;opacity:0.2}#mermaid-svg-HCiVzkgu8ZexoO9L .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-HCiVzkgu8ZexoO9L .section2{fill:#fff400}#mermaid-svg-HCiVzkgu8ZexoO9L .section1,#mermaid-svg-HCiVzkgu8ZexoO9L .section3{fill:#fff;opacity:0.2}#mermaid-svg-HCiVzkgu8ZexoO9L .sectionTitle0{fill:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .sectionTitle1{fill:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .sectionTitle2{fill:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .sectionTitle3{fill:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-HCiVzkgu8ZexoO9L .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-HCiVzkgu8ZexoO9L .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-HCiVzkgu8ZexoO9L .grid path{stroke-width:0}#mermaid-svg-HCiVzkgu8ZexoO9L .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-HCiVzkgu8ZexoO9L .task{stroke-width:2}#mermaid-svg-HCiVzkgu8ZexoO9L .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-HCiVzkgu8ZexoO9L .taskText:not([font-size]){font-size:11px}#mermaid-svg-HCiVzkgu8ZexoO9L .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-HCiVzkgu8ZexoO9L .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-HCiVzkgu8ZexoO9L .task.clickable{cursor:pointer}#mermaid-svg-HCiVzkgu8ZexoO9L .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-HCiVzkgu8ZexoO9L .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-HCiVzkgu8ZexoO9L .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-HCiVzkgu8ZexoO9L .taskText0,#mermaid-svg-HCiVzkgu8ZexoO9L .taskText1,#mermaid-svg-HCiVzkgu8ZexoO9L .taskText2,#mermaid-svg-HCiVzkgu8ZexoO9L .taskText3{fill:#fff}#mermaid-svg-HCiVzkgu8ZexoO9L .task0,#mermaid-svg-HCiVzkgu8ZexoO9L .task1,#mermaid-svg-HCiVzkgu8ZexoO9L .task2,#mermaid-svg-HCiVzkgu8ZexoO9L .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-HCiVzkgu8ZexoO9L .taskTextOutside0,#mermaid-svg-HCiVzkgu8ZexoO9L .taskTextOutside2{fill:#000}#mermaid-svg-HCiVzkgu8ZexoO9L .taskTextOutside1,#mermaid-svg-HCiVzkgu8ZexoO9L .taskTextOutside3{fill:#000}#mermaid-svg-HCiVzkgu8ZexoO9L .active0,#mermaid-svg-HCiVzkgu8ZexoO9L .active1,#mermaid-svg-HCiVzkgu8ZexoO9L .active2,#mermaid-svg-HCiVzkgu8ZexoO9L .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-HCiVzkgu8ZexoO9L .activeText0,#mermaid-svg-HCiVzkgu8ZexoO9L .activeText1,#mermaid-svg-HCiVzkgu8ZexoO9L .activeText2,#mermaid-svg-HCiVzkgu8ZexoO9L .activeText3{fill:#000 !important}#mermaid-svg-HCiVzkgu8ZexoO9L .done0,#mermaid-svg-HCiVzkgu8ZexoO9L .done1,#mermaid-svg-HCiVzkgu8ZexoO9L .done2,#mermaid-svg-HCiVzkgu8ZexoO9L .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-HCiVzkgu8ZexoO9L .doneText0,#mermaid-svg-HCiVzkgu8ZexoO9L .doneText1,#mermaid-svg-HCiVzkgu8ZexoO9L .doneText2,#mermaid-svg-HCiVzkgu8ZexoO9L .doneText3{fill:#000 !important}#mermaid-svg-HCiVzkgu8ZexoO9L .crit0,#mermaid-svg-HCiVzkgu8ZexoO9L .crit1,#mermaid-svg-HCiVzkgu8ZexoO9L .crit2,#mermaid-svg-HCiVzkgu8ZexoO9L .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-HCiVzkgu8ZexoO9L .activeCrit0,#mermaid-svg-HCiVzkgu8ZexoO9L .activeCrit1,#mermaid-svg-HCiVzkgu8ZexoO9L .activeCrit2,#mermaid-svg-HCiVzkgu8ZexoO9L .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-HCiVzkgu8ZexoO9L .doneCrit0,#mermaid-svg-HCiVzkgu8ZexoO9L .doneCrit1,#mermaid-svg-HCiVzkgu8ZexoO9L .doneCrit2,#mermaid-svg-HCiVzkgu8ZexoO9L .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-HCiVzkgu8ZexoO9L .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-HCiVzkgu8ZexoO9L .milestoneText{font-style:italic}#mermaid-svg-HCiVzkgu8ZexoO9L .doneCritText0,#mermaid-svg-HCiVzkgu8ZexoO9L .doneCritText1,#mermaid-svg-HCiVzkgu8ZexoO9L .doneCritText2,#mermaid-svg-HCiVzkgu8ZexoO9L .doneCritText3{fill:#000 !important}#mermaid-svg-HCiVzkgu8ZexoO9L .activeCritText0,#mermaid-svg-HCiVzkgu8ZexoO9L .activeCritText1,#mermaid-svg-HCiVzkgu8ZexoO9L .activeCritText2,#mermaid-svg-HCiVzkgu8ZexoO9L .activeCritText3{fill:#000 !important}#mermaid-svg-HCiVzkgu8ZexoO9L .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-HCiVzkgu8ZexoO9L g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-HCiVzkgu8ZexoO9L g.classGroup text .title{font-weight:bolder}#mermaid-svg-HCiVzkgu8ZexoO9L g.clickable{cursor:pointer}#mermaid-svg-HCiVzkgu8ZexoO9L g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-HCiVzkgu8ZexoO9L g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-HCiVzkgu8ZexoO9L .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-HCiVzkgu8ZexoO9L .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-HCiVzkgu8ZexoO9L .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-HCiVzkgu8ZexoO9L .dashed-line{stroke-dasharray:3}#mermaid-svg-HCiVzkgu8ZexoO9L #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-HCiVzkgu8ZexoO9L #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-HCiVzkgu8ZexoO9L #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-HCiVzkgu8ZexoO9L #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-HCiVzkgu8ZexoO9L #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-HCiVzkgu8ZexoO9L #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-HCiVzkgu8ZexoO9L #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-HCiVzkgu8ZexoO9L #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-HCiVzkgu8ZexoO9L .commit-id,#mermaid-svg-HCiVzkgu8ZexoO9L .commit-msg,#mermaid-svg-HCiVzkgu8ZexoO9L .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-HCiVzkgu8ZexoO9L .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-HCiVzkgu8ZexoO9L .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-HCiVzkgu8ZexoO9L g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-HCiVzkgu8ZexoO9L g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-HCiVzkgu8ZexoO9L g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-HCiVzkgu8ZexoO9L g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-HCiVzkgu8ZexoO9L g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-HCiVzkgu8ZexoO9L g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-HCiVzkgu8ZexoO9L .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-HCiVzkgu8ZexoO9L .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-HCiVzkgu8ZexoO9L .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-HCiVzkgu8ZexoO9L .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-HCiVzkgu8ZexoO9L .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-HCiVzkgu8ZexoO9L .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-HCiVzkgu8ZexoO9L .edgeLabel text{fill:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-HCiVzkgu8ZexoO9L .node circle.state-start{fill:black;stroke:black}#mermaid-svg-HCiVzkgu8ZexoO9L .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-HCiVzkgu8ZexoO9L #statediagram-barbEnd{fill:#9370db}#mermaid-svg-HCiVzkgu8ZexoO9L .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-HCiVzkgu8ZexoO9L .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-HCiVzkgu8ZexoO9L .statediagram-state .divider{stroke:#9370db}#mermaid-svg-HCiVzkgu8ZexoO9L .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-HCiVzkgu8ZexoO9L .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-HCiVzkgu8ZexoO9L .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-HCiVzkgu8ZexoO9L .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-HCiVzkgu8ZexoO9L .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-HCiVzkgu8ZexoO9L .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-HCiVzkgu8ZexoO9L .note-edge{stroke-dasharray:5}#mermaid-svg-HCiVzkgu8ZexoO9L .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-HCiVzkgu8ZexoO9L .error-icon{fill:#522}#mermaid-svg-HCiVzkgu8ZexoO9L .error-text{fill:#522;stroke:#522}#mermaid-svg-HCiVzkgu8ZexoO9L .edge-thickness-normal{stroke-width:2px}#mermaid-svg-HCiVzkgu8ZexoO9L .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-HCiVzkgu8ZexoO9L .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-HCiVzkgu8ZexoO9L .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-HCiVzkgu8ZexoO9L .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-HCiVzkgu8ZexoO9L .marker{fill:#333}#mermaid-svg-HCiVzkgu8ZexoO9L .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-HCiVzkgu8ZexoO9L {color: rgba(0, 0, 0, 0.75);font: ;}明文對合變換1對合變換2對合變換1對合變換2對合變換1密文 #mermaid-svg-zeJJmtNEVNQRIAuh .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .label text{fill:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .node rect,#mermaid-svg-zeJJmtNEVNQRIAuh .node circle,#mermaid-svg-zeJJmtNEVNQRIAuh .node ellipse,#mermaid-svg-zeJJmtNEVNQRIAuh .node polygon,#mermaid-svg-zeJJmtNEVNQRIAuh .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-zeJJmtNEVNQRIAuh .node .label{text-align:center;fill:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .node.clickable{cursor:pointer}#mermaid-svg-zeJJmtNEVNQRIAuh .arrowheadPath{fill:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-zeJJmtNEVNQRIAuh .flowchart-link{stroke:#333;fill:none}#mermaid-svg-zeJJmtNEVNQRIAuh .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-zeJJmtNEVNQRIAuh .edgeLabel rect{opacity:0.9}#mermaid-svg-zeJJmtNEVNQRIAuh .edgeLabel span{color:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-zeJJmtNEVNQRIAuh .cluster text{fill:#333}#mermaid-svg-zeJJmtNEVNQRIAuh div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-zeJJmtNEVNQRIAuh .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-zeJJmtNEVNQRIAuh text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-zeJJmtNEVNQRIAuh .actor-line{stroke:grey}#mermaid-svg-zeJJmtNEVNQRIAuh .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-zeJJmtNEVNQRIAuh #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .sequenceNumber{fill:#fff}#mermaid-svg-zeJJmtNEVNQRIAuh #sequencenumber{fill:#333}#mermaid-svg-zeJJmtNEVNQRIAuh #crosshead path{fill:#333;stroke:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .messageText{fill:#333;stroke:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-zeJJmtNEVNQRIAuh .labelText,#mermaid-svg-zeJJmtNEVNQRIAuh .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-zeJJmtNEVNQRIAuh .loopText,#mermaid-svg-zeJJmtNEVNQRIAuh .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-zeJJmtNEVNQRIAuh .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-zeJJmtNEVNQRIAuh .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-zeJJmtNEVNQRIAuh .noteText,#mermaid-svg-zeJJmtNEVNQRIAuh .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-zeJJmtNEVNQRIAuh .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-zeJJmtNEVNQRIAuh .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-zeJJmtNEVNQRIAuh .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-zeJJmtNEVNQRIAuh .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zeJJmtNEVNQRIAuh .section{stroke:none;opacity:0.2}#mermaid-svg-zeJJmtNEVNQRIAuh .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-zeJJmtNEVNQRIAuh .section2{fill:#fff400}#mermaid-svg-zeJJmtNEVNQRIAuh .section1,#mermaid-svg-zeJJmtNEVNQRIAuh .section3{fill:#fff;opacity:0.2}#mermaid-svg-zeJJmtNEVNQRIAuh .sectionTitle0{fill:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .sectionTitle1{fill:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .sectionTitle2{fill:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .sectionTitle3{fill:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zeJJmtNEVNQRIAuh .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-zeJJmtNEVNQRIAuh .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zeJJmtNEVNQRIAuh .grid path{stroke-width:0}#mermaid-svg-zeJJmtNEVNQRIAuh .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-zeJJmtNEVNQRIAuh .task{stroke-width:2}#mermaid-svg-zeJJmtNEVNQRIAuh .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zeJJmtNEVNQRIAuh .taskText:not([font-size]){font-size:11px}#mermaid-svg-zeJJmtNEVNQRIAuh .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zeJJmtNEVNQRIAuh .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-zeJJmtNEVNQRIAuh .task.clickable{cursor:pointer}#mermaid-svg-zeJJmtNEVNQRIAuh .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-zeJJmtNEVNQRIAuh .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-zeJJmtNEVNQRIAuh .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-zeJJmtNEVNQRIAuh .taskText0,#mermaid-svg-zeJJmtNEVNQRIAuh .taskText1,#mermaid-svg-zeJJmtNEVNQRIAuh .taskText2,#mermaid-svg-zeJJmtNEVNQRIAuh .taskText3{fill:#fff}#mermaid-svg-zeJJmtNEVNQRIAuh .task0,#mermaid-svg-zeJJmtNEVNQRIAuh .task1,#mermaid-svg-zeJJmtNEVNQRIAuh .task2,#mermaid-svg-zeJJmtNEVNQRIAuh .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-zeJJmtNEVNQRIAuh .taskTextOutside0,#mermaid-svg-zeJJmtNEVNQRIAuh .taskTextOutside2{fill:#000}#mermaid-svg-zeJJmtNEVNQRIAuh .taskTextOutside1,#mermaid-svg-zeJJmtNEVNQRIAuh .taskTextOutside3{fill:#000}#mermaid-svg-zeJJmtNEVNQRIAuh .active0,#mermaid-svg-zeJJmtNEVNQRIAuh .active1,#mermaid-svg-zeJJmtNEVNQRIAuh .active2,#mermaid-svg-zeJJmtNEVNQRIAuh .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-zeJJmtNEVNQRIAuh .activeText0,#mermaid-svg-zeJJmtNEVNQRIAuh .activeText1,#mermaid-svg-zeJJmtNEVNQRIAuh .activeText2,#mermaid-svg-zeJJmtNEVNQRIAuh .activeText3{fill:#000 !important}#mermaid-svg-zeJJmtNEVNQRIAuh .done0,#mermaid-svg-zeJJmtNEVNQRIAuh .done1,#mermaid-svg-zeJJmtNEVNQRIAuh .done2,#mermaid-svg-zeJJmtNEVNQRIAuh .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-zeJJmtNEVNQRIAuh .doneText0,#mermaid-svg-zeJJmtNEVNQRIAuh .doneText1,#mermaid-svg-zeJJmtNEVNQRIAuh .doneText2,#mermaid-svg-zeJJmtNEVNQRIAuh .doneText3{fill:#000 !important}#mermaid-svg-zeJJmtNEVNQRIAuh .crit0,#mermaid-svg-zeJJmtNEVNQRIAuh .crit1,#mermaid-svg-zeJJmtNEVNQRIAuh .crit2,#mermaid-svg-zeJJmtNEVNQRIAuh .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-zeJJmtNEVNQRIAuh .activeCrit0,#mermaid-svg-zeJJmtNEVNQRIAuh .activeCrit1,#mermaid-svg-zeJJmtNEVNQRIAuh .activeCrit2,#mermaid-svg-zeJJmtNEVNQRIAuh .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-zeJJmtNEVNQRIAuh .doneCrit0,#mermaid-svg-zeJJmtNEVNQRIAuh .doneCrit1,#mermaid-svg-zeJJmtNEVNQRIAuh .doneCrit2,#mermaid-svg-zeJJmtNEVNQRIAuh .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-zeJJmtNEVNQRIAuh .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-zeJJmtNEVNQRIAuh .milestoneText{font-style:italic}#mermaid-svg-zeJJmtNEVNQRIAuh .doneCritText0,#mermaid-svg-zeJJmtNEVNQRIAuh .doneCritText1,#mermaid-svg-zeJJmtNEVNQRIAuh .doneCritText2,#mermaid-svg-zeJJmtNEVNQRIAuh .doneCritText3{fill:#000 !important}#mermaid-svg-zeJJmtNEVNQRIAuh .activeCritText0,#mermaid-svg-zeJJmtNEVNQRIAuh .activeCritText1,#mermaid-svg-zeJJmtNEVNQRIAuh .activeCritText2,#mermaid-svg-zeJJmtNEVNQRIAuh .activeCritText3{fill:#000 !important}#mermaid-svg-zeJJmtNEVNQRIAuh .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zeJJmtNEVNQRIAuh g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-zeJJmtNEVNQRIAuh g.classGroup text .title{font-weight:bolder}#mermaid-svg-zeJJmtNEVNQRIAuh g.clickable{cursor:pointer}#mermaid-svg-zeJJmtNEVNQRIAuh g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-zeJJmtNEVNQRIAuh g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-zeJJmtNEVNQRIAuh .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-zeJJmtNEVNQRIAuh .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-zeJJmtNEVNQRIAuh .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-zeJJmtNEVNQRIAuh .dashed-line{stroke-dasharray:3}#mermaid-svg-zeJJmtNEVNQRIAuh #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-zeJJmtNEVNQRIAuh #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-zeJJmtNEVNQRIAuh #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-zeJJmtNEVNQRIAuh #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-zeJJmtNEVNQRIAuh #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-zeJJmtNEVNQRIAuh #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-zeJJmtNEVNQRIAuh #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-zeJJmtNEVNQRIAuh #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-zeJJmtNEVNQRIAuh .commit-id,#mermaid-svg-zeJJmtNEVNQRIAuh .commit-msg,#mermaid-svg-zeJJmtNEVNQRIAuh .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zeJJmtNEVNQRIAuh .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zeJJmtNEVNQRIAuh .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zeJJmtNEVNQRIAuh g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zeJJmtNEVNQRIAuh g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-zeJJmtNEVNQRIAuh g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-zeJJmtNEVNQRIAuh g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-zeJJmtNEVNQRIAuh g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-zeJJmtNEVNQRIAuh g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-zeJJmtNEVNQRIAuh .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-zeJJmtNEVNQRIAuh .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-zeJJmtNEVNQRIAuh .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-zeJJmtNEVNQRIAuh .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-zeJJmtNEVNQRIAuh .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-zeJJmtNEVNQRIAuh .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-zeJJmtNEVNQRIAuh .edgeLabel text{fill:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-zeJJmtNEVNQRIAuh .node circle.state-start{fill:black;stroke:black}#mermaid-svg-zeJJmtNEVNQRIAuh .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-zeJJmtNEVNQRIAuh #statediagram-barbEnd{fill:#9370db}#mermaid-svg-zeJJmtNEVNQRIAuh .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-zeJJmtNEVNQRIAuh .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-zeJJmtNEVNQRIAuh .statediagram-state .divider{stroke:#9370db}#mermaid-svg-zeJJmtNEVNQRIAuh .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-zeJJmtNEVNQRIAuh .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-zeJJmtNEVNQRIAuh .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-zeJJmtNEVNQRIAuh .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-zeJJmtNEVNQRIAuh .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-zeJJmtNEVNQRIAuh .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-zeJJmtNEVNQRIAuh .note-edge{stroke-dasharray:5}#mermaid-svg-zeJJmtNEVNQRIAuh .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-zeJJmtNEVNQRIAuh .error-icon{fill:#522}#mermaid-svg-zeJJmtNEVNQRIAuh .error-text{fill:#522;stroke:#522}#mermaid-svg-zeJJmtNEVNQRIAuh .edge-thickness-normal{stroke-width:2px}#mermaid-svg-zeJJmtNEVNQRIAuh .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-zeJJmtNEVNQRIAuh .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-zeJJmtNEVNQRIAuh .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-zeJJmtNEVNQRIAuh .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-zeJJmtNEVNQRIAuh .marker{fill:#333}#mermaid-svg-zeJJmtNEVNQRIAuh .marker.cross{stroke:#333}:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}#mermaid-svg-zeJJmtNEVNQRIAuh {color: rgba(0, 0, 0, 0.75);font: ;}密文對合變換1對合變換2對合變換1對合變換2對合變換1明文

    可知,將C解密為M的過程為M加密為C的逆過程\color{gray}可知,將C解密為M的過程為M加密為C的逆過程CMMC

    將此3圈擴展為16圈即為DES的脫密過程\color{blue}將此3圈擴展為16圈即為DES的脫密過程316DES

    總結

    最后附帶一張手繪總結圖\color{red}最后附帶一張手繪總結圖

    總結

    以上是生活随笔為你收集整理的信息安全密码学:DES算法的核心 E盒、S盒、P盒的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。