AES內部結構(加密部分)

2022-08-29 06:57:10 字數 1844 閱讀 5559

內容參考書:

深入淺出密碼學——常用加密技術原理與應用 清華大學出版社

第四章 高階加密標準

aes是面向位元組的密碼:

假設狀態a是由16個位元組按照矩陣方式組成:

金鑰k對應的矩陣是一樣的形式。

如4-3圖所示,每一輪的第一層都是位元組代換層。

位元組代換層可以看做是16個並行的s盒,每個s盒的輸入和輸出都是8位。

值得注意的是,aes使用的16個s盒是完全相同的

在這一層中,每個狀態位元組ai都被替換為另乙個位元組bi:s(ai)=bi

s盒代換是乙個雙向對映,即256個可能的輸入(8位)都與唯一的輸出一一對應,這個屬性允許我們唯一地逆轉s盒,這也是解密操作所需要的。

s盒的數學描述:

aes的s盒具有非常強的代數結構,可以看做乙個兩步的數學變換。

因為這部分和理解aes的實現關係不大,有興趣可以看看原書,講得很清楚。

在s盒的硬體實現部分,到底是用查詢表來實現好,還是按部就班的計算好,這個問題先擱置,原書內容為:

aes的擴散層由行移位和列混淆兩個子層組成。擴散指的是將單個位的影響擴散到整個狀態中。是線性操作。

行移位子層

行移位變換迴圈往復地將狀態矩陣的第二行向右移動三個位元組,將第三行向右移動兩個位元組,將第四行向右移動乙個位元組,第一行保持不變

列混淆子層

如果將行移位之後的狀態表示為b,列混淆後的輸出狀態表示為c,即mixcolumn(b)=c。

開始四個輸出位元組的計算方式,4*4的矩陣是固定的:

金鑰加法層

金鑰加法層的兩個輸入分別是16位元組的當前狀態矩陣和長度為16位元組的子金鑰。

這兩個輸入通過按位異或操作組合在一起。

128位aes有十輪需要11個子金鑰,長度也是128位。

子金鑰的計算是遞迴的,即為了得到子金鑰ki,必須要知道ki-1

128位aes子金鑰的編排,k是原始金鑰:

最左邊字的計算方式:i=1,...,10

其餘三個字:i=1,...,10,j=1,2,3

g()函式首先將四個輸入位元組翻轉(?),並執行乙個按位元組的s盒代換,最後與輪係數rc相加。增加非線性,消除對稱性。

輪係數每輪都會改變,規則為:

HBase內部結構

table表 就是有乙個或者多個列族組成,加上之前的 使用,這個表概念應該很熟了 row行 乙個行包括了多個列,這些列通過列族來分類 column family列族 列族是多個列的集合,hbase會盡量的將乙個列族的列放入同乙個伺服器內,這樣可以提高訪問效能,並且可以批量管理有關聯的一堆列,所有的資...

Oracle檢視內部結構

1 分析資料檔案塊,轉儲資料檔案n的塊m alter system dump datafile n block m 2 分析日誌檔案 alter system dump logfile logfilename 3 分析控制檔案的內容 alter session set events immediat...

MFC內部結構剖析

mfc內部結構剖析 mfc程式的執行順序依次是 程式在載入main函式之前,會先為全域性變數和全域性物件分配記憶體空間。afxwinmain函式 winmain函式實際上是通過呼叫afxwinmain函式來完成它的功能的。afxwinmain呼叫afxgetthread函式獲得乙個cwintread...