北理工網路安全導論作業 DES演算法

2021-10-10 01:29:33 字數 3736 閱讀 4008

一.分析des演算法的程式設計實現

小組使用同乙份原始碼,程式實現參考以下流程圖,採用c++實現,僅限十六位十六進製制數為輸入輸出。

二.實驗驗證des演算法的特性

明文雪崩效應

如圖所示,明文只改變了一位,金鑰不變,密文十六位完全改變。

2.金鑰雪崩效應

如圖所示,金鑰只改變了一位,明文不變,密文十六位完全改變。

3.加密解密過程可逆

如圖所示,加密解密過程是可逆的。

附**:

#include #include #include using namespace std;

//記錄所有的子秘鑰

int eachkey[16][48];

int boxs[8][4][16] = ,

, ,

},//s2

, ,

, }, //s3

, ,

, }, //s4

, ,

, }, //s5

, ,

, }, //s6

, ,

, }, //s7

, ,

, }, //s8

, ,

, }};

//記錄左移次數

int leftmove[16] = ;

int c[28] = , d[28] = ;

int l[32] = , r[32] = ;

//p置換

int p[32] = ;

//e擴充套件

int bitechoicelabel[48] = ;

//秘鑰置換

int keyswap[8][6] = ,,,

,,,,

};//密文初始置換

int ip[8][8] = ,,,

,,,,

};//密文逆置換

int ip_1[8][8] = ,,,

,,,,

};//64->56選擇

int pc_1[8][7] = ,,,

,,,,

};//初始置換ip

void initip(int **input)

int **newip = new int *[8];

for (int i = 0; i < 8; i++)

newip[i] = new int[8];

for (int i = 0; i < 8; i++)

} int l = 0, m = 0;

for(int i = 0;i < 8;i++)

for (int j = 0; j < 8; j++)

}//逆初始置換

void reverse()

int l = 0, m = 0;

for (int i = 0; i < 8; i++)

} l = 0;

for (int i = 0; i < 64; i++)

if (i < 32)

l[l++] = a[i];

else

r[m++] = a[i];

}//操作函式f

int *f(int n, int flag)

int l = 0;

if (flag == 0)

} }else

int newr[48];

for (int i = 0; i < 48; i++)

newr[i] = r[bitechoicelabel[i]-1];

for (int i = 0; i < 48; i++)

a[i] = (newkey[i]+newr[i])%2;

int b[8][6];

int r[8];

l = 0;

int m = 0;

int k = 0;

for (int i = 0; i < 48; i++)

else

m++;

} int c[8][4];

l = 0;

for (int i = 0; i < 8; i++)

int tempp[32];

for (int i = 0; i < 8; i++)

for (int j = 0; j < 4; j++)

for (int i = 0; i < 32; i++)

result[i] = tempp[p[i] - 1];

return result;

}//交換處理

void swap(int n, int flag)

result = f(n, flag);

//資料更新計

for (int i = 0; i < 32; i++)

if (n == 15) }}

//產生第一輪秘鑰(64位->56位)

int **firstkey(int **key)

} return fk;

}//迴圈產生子秘鑰

void nextkeyleft(int n)

c[27] = c0;

d[27] = d0; }}

//十六進製制輸入轉二進位制

int **hxtobin(string input)

for (int i = 0; i < 16; i++)

int l = 0;

for (int i = 0; i < 8; i++)

} return init_letters;

}//二進位制密文轉十六進製制密文

string bintohx(int a)

} j++;

} return res;

}//解密過程

void decode(string res)

reverse();

int a[64];

for (int i = 0; i < 32; i++)

string input;

input = bintohx(a);

std::cout << input << endl << endl;;

}int main()

else

}reverse();

int k = 0;

for (int i = 0; i < 32; i++)

for (int i = 0; i < 32; i++)

words = bintohx(miwen);

std::cout << "---------- 加密所得密文 ----------" <

} else if(flag==2)

else if(flag==3) break;

} std::cout << "---------- end! ----------" << endl;

return 0;

}//**部分參考自

網路安全作業

201班 董洪任 2 簡述網路安全包括的5個基本要素。3 簡述網路安全威脅的型別有哪些?4 簡述安全性指標是哪3個?5 簡述物理隔離的兩種型別。6 簡述蜜網技術的概念 201班 董洪任 2 簡述對稱密碼體制和非對稱密碼體制的區別。3 簡述對網路資料加密主要的3種實現方式。節點對節點加密 節點對節點加...

網路安全導論課程 windows開啟遠端

其中windows7設定引許遠端登入的步驟為 b電腦操作之1 啟用遠端桌面 右擊我的電腦 屬性 遠端設定 遠端 允許遠端登入到此計算機 任意版本 b電腦操作之2 設定防火牆 開始 控制面板 管理工具 服務 windwos fire 開啟 設定為自啟動 控制面板 windows防火牆 允許程式通過防火...

網路安全部寒假訓練作業(一)

這個呢我就用來展示我的操作吧,原諒我不知道怎麼表達o.o html初步學習展示標題 標題標題我想你攜酒踏月,共享伯牙絕絃,共赴高山流水,死後齊掛東南,亦是萬物生長,長出曇花永現。我想你攜酒踏月 共享伯牙絕絃 共赴高山流水 死後齊掛東南 亦是萬物生長 長出曇花永現 我想你攜酒踏月 共享伯牙絕絃 共赴高...