DES加密

  DES采用了64位的分組長度和56位的密鑰長度,是對稱加密的一種。

  DES的理論進化主線是 1945年Shannon大神提出的交替使用混淆(使密文與密鑰的統計關系變復雜)和擴散(使明文與密文的統計關系變復雜)的乘積密碼(DES加密的核心思想)-->1960s的Feistel結構-->DES。實踐主線是 1971年基于Feistel結構的LUCIFER算法-->Tuchman-Mayer方案(將LUCIFER的128位密鑰簡化為56位)-->1977年被采納的DES(增加S盒,產生非線性)。

  下圖為DES加密的整個機制

  

  DES加密操作分兩塊,明文加密以及生成子密鑰兩部分。

  上圖左半部分描述了明文加密成密文的三個階段。

  1、64位的明文經初始置換(IP)而重新排列。

  2、進行16輪的置換和轉換(基于Feistel結構)。

  3、再做一次置換(IP-1,與初始置換互逆)。

  可逆驗證 ? ?M=IP-1{F[IP(P)]} ? ??

       ?IP-1{F[IP(M)]}=?IP-1{F[IPIP-1{F[IP(P)]}]}=IP-1{FF[IP(P)]}=IP-1IP(P)=P

  結論,加密和解密的過程基本一致(F函數代表16輪轉換的整體效果,實際上子密鑰在加密和解密中順序是相反的)

  上圖右半部分是56位密鑰的操作過程。

  1、密鑰先做一個置換。

  2、再做16次包含循環左移和置換的操作組合,每次都產生一個子密鑰Ki。每一輪的置換操作都完全相同,但由于循環左移而使得每個子密鑰不同。

  

  下面介紹初始置換及其逆置換

  

  如上表,分別代表初始置換和初始置換的逆置換。表中數字包含1-64,代表輸入的64位分組的每一比特在置換輸出后的位置。

  很顯然,以上兩個置換確實是可逆的,如明文分組的第1位經初始置換后出現在第58位,而逆置換的第58位將輸出到第1位。

?  這個置換的原理實際上是對置換群的可逆操作。

  Feistel結構的加密與解密

  

  Feistel結構的加密算法將明文分組分成等長的左右兩部分,這兩半經過n輪迭代后組成密文分組。每一輪的迭代操作都完全相同,解密過程本質上與加密過程操作是一致的,只是子密鑰的使用順序與加密過程完全相反。因此,為了研究加密與解密過程的可逆性,可將問題簡化為只有一輪的迭代,如下圖。

  

  feistel結構的可逆性,其運用的數學原理是異或的幾個基本性質

   ? ? [AB]C=A[BC] ? ? ? ?

    AA=0 ? ? ??

    A0=A

  以 i 輪為例

? ? ? ? ??

    加密時有 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?解密時有

      Li=Ri-1                 ?  Li’=Ri-1‘ ? ==> ??Li’=Li=Ri-1  

      Ri=Li-1F(Ri-1,Ki) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Ri’=Li-1F(Ri-1’,Ki) ? ==> ?Ri’=RiF(Li,Ki)=Li-1F(Ri-1,Ki)F(Ri-1,Ki)=Li-1

    結論:每輪加密和解密的中間結果都完全一樣,且與F函數無關。而F函數越復雜,Ri與Li-1的關系越復雜,因而越難被破解。

    

  DES第二階段每輪變換的詳細過程

  

  由于輪密鑰長48位,R是32位,首先要將R進行置換擴展為48位,其中有16位是重復的,如用下表進行置換擴展。

  

  然后將擴展后的48位與輪密鑰進行異或,所得結果再用一個替代函數作用(S盒)并輸出32位。下圖解釋了S盒在函數F中的作用。

  

  代替函數由8個S盒組成,S盒的變換參見下表。

  

  每個S盒都輸入6位,輸出4位。盒Si輸入的第1位和最后1位組成一個2位的二進制數,用來選擇S盒4行代替值中的一行,中間4位用來選擇16列中的某一列。行列交叉處的十進制轉換為二進制之后可得到輸出的4位二進制數。

  S盒實現了非線性的特性。通過S盒,不同的輸入可以有相同的輸出,進一步增加了明文與密文之間的映射關系的復雜度,使得破解更加艱難。

  最后再做一次置換后輸出,該置換例子如下表。

  

  密鑰產生

  1、首先輸入64位密鑰,密鑰各位分別標記為1-64。從64位中選擇56位作為有效密鑰,如選擇下表陰影部分。

  

  2、將所得56位有效密鑰進行置換并劃分成等長的兩部分C0和D0,如下表。

  

  3、每輪進行迭代時,Ci-1和Di-1分別循環左移一位或者兩位,具體移位數見下表。

  

  4、對移位后的值再做一次置換,如下表。

  

  

轉載于:https://www.cnblogs.com/block2016/p/5502544.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/271600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271600.shtml
英文地址,請注明出處:http://en.pswp.cn/news/271600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

計算機系統基礎:輸入輸出技術知識筆記

1、內存與接口的編址方式 1.1 內存和接口地址獨立編址方法 內存地址和接口地址是兩個完全獨立和相互隔離的地址空間。訪問數據的指令也不同,接口只有讀寫指令,其余都是內存指令。 特點:接口和內存指令容易區分,但接口指令太少、功…

小米max2 android p,這就是小米Max2?6.4英寸超大屏幕配置大升級

標簽:小米手機(3463)小米(3233)雖說今年上半年小米6的重磅機型會是小米6,但隨著小米Max在官方商城的下架,這款巨屏手機的更新換代產品已經在網絡上浮出水面。根據知名圖形測試網站GFXBench最新公布的信息顯示,一款代號為Oxygen的小…

winform直接控制云臺_速學指南,2分鐘學會Feiyu pocket口袋云臺的隱藏功能操作

上周三,Feiyu pocket口袋云臺相機正式發布,重量僅115g,單手可持,可拍攝 4K/60fps高清畫面;6軸混合防抖技術加持,賦予軌跡延時、全域模式、慢動作、全跟隨等模式更專業、高效的拍攝體驗。Feiyu pocket口袋云…

Python中處理DataFrame,R繪圖

IN Pythonfrom pandas import DataFrame,Seriesimport pandas as pdimport numpy as npdata pd.read_csv(rC:\Users\lxy\Desktop\工作相關\工作報告KPI\pydata-book-master\ch06\ex5.csv)data.index.namexdata.to_csv(D:\df.csv)IN R> library(ggplot2)> df <- read.…

ThreadPoolTaskExecutor和ThreadPoolExecutor區別

初學者很容易看錯&#xff0c;如果沒有看到spring或者JUC源碼的人肯定是不太了解的。 ThreadPoolTaskExecutor是spring core包中的&#xff0c;而ThreadPoolExecutor是JDK中的JUC。ThreadPoolTaskExecutor是對ThreadPoolExecutor進行了封裝處理。 ThreadPoolExecutor ThreadP…

電腦技巧:如何解決大部分的電腦防彈窗廣告

相信很多人都有這種情況&#xff0c;打開電腦,電腦上全部各種廣告彈窗,或者在辦公、追劇的時候,電腦突然就彈出了一條&#xff0c;是不是很煩人&#xff0c;這幾招不用借助軟件&#xff0c;就能解決彈窗的方法不防一試。 方法一&#xff1a; 第一種方法&#xff0c;可以對付部分…

c 跨平臺android,Unity 使用C/C++ 跨平臺終極解決方式(PC,iOS,Android,以及支持C/C++的平臺)...

PC的事實上根本不用說&#xff0c;畢竟C#和C交互的文章已經夠多了&#xff0c;當然我自覺得經過幾次折騰后。差點兒全部游戲須要到的操作我都掌握了(各種傳參方法&#xff0c;各種坑&#xff0c;不懂的能夠留言問。盡管基本上沒人看。哈哈)廢話不多說&#xff0c;我們主要來講兩…

hades武器第四形態解鎖_凱多的第四個技能預告——冰凍!

在《海賊王》中&#xff0c;四皇凱多被譽為“海陸空最強生物”&#xff0c;能夠變成神龍&#xff0c;如果不出意外的話&#xff0c;凱多應該是動物系幻獸種神龍果實的能力者。畢竟凱多的海賊團就叫做“百獸海賊團”&#xff0c;手下也都是動物系果實能力者&#xff0c;能夠降服…

解決git@github.com: Permission denied (publickey). fatal: Could not read from remote repository. Pleas

今天用idea提交代碼到github上,push后報錯 gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 一:原因分析 Permission denied (publickey) 沒…

轉載------------java equals 方法

作者&#xff1a;海子出處&#xff1a;http://www.cnblogs.com/dolphin0520/淺談Java中的equals和 在初學Java時&#xff0c;可能會經常碰到下面的代碼&#xff1a; 1 String str1 new String("hello"); 2 String str2 new String("hello"); 3 …

計算機系統基礎:校驗碼知識筆記

1、校驗碼概念 校驗碼主要是為了解決計算機各部件進行數據傳輸和交換&#xff0c;確保傳送過程的正確無誤&#xff0c;一是為了提高硬件電路的可靠性&#xff0c;二是提高代碼的校驗能力。通常會用校驗碼來檢查傳送的數據是否正確。 校驗碼編碼分為兩類&#xff1a;合法編碼、錯…

qml與HTML數據交互,GitHub - toby20130333/QtQuickHtmlBridge: 基于QtQuick的C++,qml,Html三者的Bridge交互...

基于QtQuick的C,qml,Html三者的Bridge交互主要功能自定義C對象并注冊到QML可以在QML中繼續擴展C對象的屬性和方法 信號等將C對象注入到WebChannelHtml中引入C對象JavaScript與C直接交互示例代碼說明main.cpp://該實例必須直接繼承自Object的 QWidget的忽略qmlRegisterType(&quo…

html為什么要進行表單驗證_化學錨栓為什么要進行拉拔試驗?

點擊箭頭處“藍色字”&#xff0c;關注我們哦&#xff01;&#xff01;化學錨栓是繼膨脹錨栓之后出現的一種新型緊固材料&#xff0c;由化學藥劑與金屬桿體組成&#xff0c;是通過特制的化學粘接劑&#xff0c;將螺桿膠結固定于砼基材鉆孔中&#xff0c;以實現對固定件錨固的復…

電路基礎知識講解(太全面了)

IT技術分享社區個人博客網站&#xff1a;https://programmerblog.xyz文章推薦程序員效率&#xff1a;畫流程圖常用的工具程序員效率&#xff1a;整理常用的在線筆記軟件遠程辦公&#xff1a;常用的遠程協助軟件&#xff0c;你都知道嗎&#xff1f;51單片機程序下載、ISP及串口基…

github設置倉庫可見性 私人倉庫設置

一:點擊Setting 二:點擊Make private 三:閱讀關于將倉庫設為私有的警告。 入您要設為私有的倉庫的名稱&#xff0c;例如 accountname/reponame。 單擊 I understand, make this repository private&#xff08;我已了解&#xff0c;請將此倉庫設為私有&#xff09;

Git合并分支操作

1. 添加自己的文件 git add .; 2. 緩存自己的文件 git stash; 3. 查看狀態 git status; 4. 獲取別的分支 git pull origin master(分支名); 5. 出棧自己的文件 git stash pop 。 轉載于:https://www.cnblogs.com/csl0910/p/5605868.html

html鼠標懸停區域拉伸,html – :將鼠標懸停在具有邊框半徑的div上

這里的問題是子元素不繼承父元素的border-radius.有兩種方法可以實現您想要的&#xff1a;您可以將子元素的border-radius設置為匹配或大于父元素的radius,或者將父元素的overflow屬性設置為hidden.這是一個快速的片段,說明了問題和兩個解決方案&#xff1a;*{box-sizing:borde…

rfid在高速公路管理中的應用_RFID技術與ETC技術在弱電門禁系統中應用

前言&#xff1a;無線射頻識別技術(RFID技術)較早的大規模的綜合應用&#xff0c;發展至今&#xff0c;我國的RFID技術已經較為成熟。 相關技術1、無線射頻識別 RFID(Radio Frequency Identification&#xff0c;無線射頻識別)是一種非接觸式的自動識別技術&#xff0c;它通過射…

Idea中Terminal中git基本操作

列出分支 列出分支基本命令&#xff1a;git branch 沒有參數時&#xff0c;git branch 會列出你在本地的分支。 上圖的意思就是&#xff0c;我們有一個叫做 master 的分支&#xff0c;并且該分支是當前分支(有*星號的)。 當你執行 git init 的時候&#xff0c;默認情況下 Gi…

計算機體系結構知識筆記

計算機體系結構結構&#xff1a;計算機的概念結構、功能和性能特性&#xff0c;它從一個更高的層次對計算機的結構特征等宏觀特征進行研究。 1、計算機體系結構分類 2、CISC和RISC 指令體系結構&#xff08;ISA&#xff09;&#xff1a;一個處理器支持的指令和指令的字節級編碼…