一.分析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初步學習展示標題 標題標題我想你攜酒踏月,共享伯牙絕絃,共赴高山流水,死後齊掛東南,亦是萬物生長,長出曇花永現。我想你攜酒踏月 共享伯牙絕絃 共赴高山流水 死後齊掛東南 亦是萬物生長 長出曇花永現 我想你攜酒踏月 共享伯牙絕絃 共赴高...