差分分析 附code

2021-10-07 06:26:31 字數 2624 閱讀 2097

演算法步驟 **

首先使用書中給出的差分鏈分析出第5輪第2、4部分的金鑰。再選擇新的差分鏈分析出第5輪第1、3部分金鑰,然後窮舉高16位金鑰情況,並驗證金鑰正確性。

與線性分析不同的是,由於差分分析中可以找到一條第5輪僅包含第1、3部分且偏差很大的差分鏈,因此不需要在已知第5輪第2、4部分的基礎上進行差分分析,也因此減小了部分時間開銷。

與線性分析相同的是,差分分析也是基於概率的分析方法,因此仍需要對一定範圍內的金鑰情況進行遍歷並驗證是否正確。

同時,由於對基於不同規模的明密文對進行分析得到的差分分析準確度也有所不同,但在超過閾值後將出現平台期,即當分析的明密文對達到max規模後,差分分析得到的結果的準確度幾乎保持不變,因此為降低時間開銷,max作為可調引數需要進行調參摸索。在本題中,該max值大約為8000。

綜上**實現流程為:快速讀入資料並存入陣列中;根據已有的明密文對分別對第5輪第2、4部分和第1、3部分進行差分分析,記錄每一種金鑰對應的count值;在一定範圍內遍歷第5輪第2、4部分和第1、3部分金鑰,窮舉高16位金鑰並驗證正確性(一定範圍指內迴圈和外迴圈的迴圈次數,該引數需要測試調整到最合適);得到正確金鑰後快速輸出金鑰。

需要注意的是,窮舉驗證過程中由於輸入資料的隨機程度不大(實際上檢測的資料具有連續性),因此在一定檢測數量下,相同明文在不同金鑰下得到相同密文的個數將會有所提公升,因此需要適度增加驗證數量。

#include

#include

typedef

unsigned

short ushort;

typedef

unsigned

int uint;

int n;

ushort ciphertext[

65540];

uint key, tail_key;

int cnt13[16]

[16], cnt24[16]

[16];

bool flag13[16]

[16];

ushort key51, key52, key53, key54;

//spn statement

const

unsigned

short sbox_4[16]

=;const

unsigned

short inverse_sbox[16]

=;const

unsigned

short pos[17]

=;const

unsigned

short pbox[17]

=;unsigned

short sbox_16[

65536

], spbox[

65536];

void

get_spbox()

}}inline ushort read()

else

if(ch >=

'a'&& ch <=

'z')

}return buf;

}inline

void

input()

}inline

void

output()

for(

int i =

0; i <8;

++i)

putchar

(buf[i]);

putchar

('\n');

}inline

void

diff_analysis()

}}} x_xor =

0x0020

;for

(x =

12345

; x <

20567

;++x)}}

}}intmain()

}}cnt24[key52]

[key54]=0

;//內迴圈

memset

(flag13,

true

,256

*sizeof

(bool))

;for

(int round13 =

0; round13 <10;

++round13)}}

flag13[key51]

[key53]

=false

;//開始窮舉

tail_key =

(key51 <<12)

|(key52 <<8)

|(key53 <<4)

| key54;

int plaintext, k1, k2, k3, k4, k5;

for(

int fore_key =

0; fore_key <

65536

;++fore_key)

if(plaintext ==24)

}if(flag)

break;}

if(flag)

break;}

output()

;}return0;

}

相關資料

spn線性密碼分析【附code】

主成分分析

主成分分析 pca 分析乙個隨機向量的中的主成分 主成分一般不是隨機向量中的某乙個分量,而是不同分量的線性組合,根據資訊理論的觀點,資訊的多少與方差有關,所以 主成分是方差最大的幾個成分 主成分分析的方法是求隨機向量的協方差矩陣 用樣本協方差矩陣代替 對於差異較大的資料,可採用相關矩陣代替協方差矩陣...

主成分分析

理論要點 1 主成分分析是一種無監督學習,因此不能用交叉驗證來檢驗誤差 2 在處理資料之前,要對資料做中心化處理 3 p太大的話,做特徵分解用svd 4 一共有min n 1,p 個主成分,因為中心化以後,rank要降一維 5 主成分的載荷向量就是協方差矩陣的特徵向量,對應特徵值最大的是第一主成分,...

主成分分析

1.概念 將一組可能存在相關性的隨機變數轉變成互不相關的隨機變數。這個概念裡有三個地方需要理解清楚。1 隨機變數的指代 在資料集中,每乙個樣本,即將資料集理解成乙個 的話,乙個樣本就是一行,則每一列就是乙個特徵,也就是乙個隨機變數,一列的所有取值就是隨機變數的所有可能取值 說的所有可能取值只針對訓練...