資源簡介
上課寫的數據加密算法,用C語言實現DES算法加解密。要求是輸入16位16進制的明文,16位的密鑰加密。解密運算與加密不同的只是Key的使用順序相反。親測樣例已過。
代碼片段和文件信息
//16輪DES?加解密算法
#include?
#include?
//初始置換IP
int?IP[64]?=?{ 58?50?42?34?26?18?10?2
60?52?44?36?28?20?12?4
62?54?46?38?30?22?14?6
64?56?48?40?32?24?16?8
57?49?41?33?25?17?9?1
59?51?43?35?27?19?11?3
61?53?45?37?29?21?13?5
63?55?47?39?31?23?15?7
};
//逆初始置換IP_1
int?IP_1[64]?=?{ 40?8?48?16?56?24?64?32
39?7?47?15?55?23?63?31
38?6?46?14?54?22?62?30
37?5?45?13?53?21?61?29
36?4?44?12?52?20?60?28
35?3?43?11?51?19?59?27
34?2?42?10?50?18?58?26
33?1?41?9?49?17?57?25
};
//擴充置換表32-48
//E-邊上兩列為擴展內容中間32bit為原文
int?E_Table[48]?=?{?31?0?1?2?3?4
3?4?5?6?7?8
7?89101112
111213141516
151617181920
192021222324
232425262728
2728293031?0?
};
//置換函數P??
int?P_Table[32]?=?{?16?7?20?21?29?12?28?17
1?15?23?26?5?18?3110
2?8?24?14?32?27?3?9
19?13?30?6?22?11?4?25
};
//S盒?壓縮48-32
//8個s盒?
//6進4出?一與最后2bit選擇行,中間4個選列,110011?3行9列;s1中為11即1011;
int?S[8][4][16]?=?{
//?S1???
1441312151183106125907
0157414213110612119538
4114813621115129731050
1512824917511314100613
//?S2???
1518146113497213120510
3134715281412011069115
0147111041315812693215
1381013154211671205149
//?S3???
1009146315511312711428
1370934610285141211151
1364981530111212510147
1101306987415143115212
//?S4???
7131430691012851112415
1381156150347212110149
1069012117131513145284
3150610113894511127214
//?S5???
2124171011685315130149
1411212471315015103986
4211110137815912563014
1181271142136150910453
//?S6???
1211015926801334147511
1015427129561131401138
9141552812370410113116
4321295151011141760813
//?S7???
4112141508133129751061
1301174911014351221586
1411131237141015680592
6111381410795015142312
//?S8???
1328461511110931450127
1151381037412561101492
7114191214206101315358
2114741081315129035611
};
//子密鑰生成——置換選擇1?
int?PC_1[56]?=?{ 5648403224168
0574941332517
915850423426
1810259514335
62544638302214
6615345372921
1356052443628
201242719113?
};
//子密鑰生成-置換選擇2??
int?PC_2[48]?=?{ 1316102304
227145209
221811
評論
共有 條評論