1//des密碼2/*
理解演算法最重要,最好自己動手實現試試看,可以使用mfc寫乙個簡單的互動介面*/3
4 #include5 #include6 #include 78
#define bit bool 910
using
namespace
std;
1112 bit k[16][48
];
1314
int15
//初置換
16 ip[64] =,
25//
末置換
26 fp[64] =,
35//
金鑰置換
36 kp[56] =,
44//
金鑰位移
45 km[16] =,
48//
壓縮置換
49 cp[48] =,
56//
擴充套件置換
57 ep[48] =,
64//
s盒
65 s_box[8][4][16] =,
68 ,
69 ,
70 },
71//
s2
72 ,
73 ,
74 ,
75 },
76//
s3
77 ,
78 ,
79 ,
80 },
81//
s4
82 ,
83 ,
84 ,
85 },
86//
s5
87 ,
88 ,
89 ,
90 },
91//
s6
92 ,
93 ,
94 ,
95 },
96//
s7
97 ,
98 ,
99 ,
100 },
101//
s8
102 ,
103 ,
104 ,
105 }},
106//
p盒
107 pp[32] =;
112113
void initial_permutation(bit pt[64
])
114
121122
void final_permutation(bit pt[64
])
123
130131
void p_box_permutation(bit x[32
])
132
139140
void generate_k(bit sk[64
])
141
156return
; 157
} 158
159void work(bit l[32],bit r[32],bit key[48],int
cnt)
160
179180
p_box_permutation(res);
181182
for(i = 0;i < 32;i++)
183 l[i] ^=res[i];
184185
if (cnt == 15) return
; 186
187 bit temp[32
];
188189 memcpy(temp,l,sizeof
(temp));
190 memcpy(l,r,sizeof
(temp));
191 memcpy(r,temp,sizeof
(temp));
192193
return
;
194}
195196
void des_enc(char txt[10],char enc[10
])
197
226227
void des_dec(char txt[10],char dec[10
])
228
256257
void
des_e()
258
286fclose(o);
287fclose(p);
288return
; 289
} 290
291void
des_d()
292
320fclose(o);
321fclose(p);
322return
; 323
} 324
325int
main()
326
336 }
密碼學系列 聊聊密碼學中的DES演算法
持續更新,歡迎關注!用心分享,共同成長 沒有什麼比你每天進步一點點更實在了 今天要說點和你的隱私有關的事情,在這個資訊化的時代,是不是真的有人一手握著你的資訊,一手數著鈔票呢?答案一定是當然。說到網路安全,我就不得不提乙個東西 密碼學 是不是聽起來頭皮發麻心跳加速 穩住穩住,老司機上線帶你學。今天給...
密碼學 密碼學基礎
密碼學是研究編制密碼和破譯密碼的技術科學。密碼學的安全目標至少包含三個方面 保密性 完整性 可用性。完整性 資源只有授權方以授權的方式進行修改,所有資源沒有授權則不能修改。可用性 資源只有在適當的時候被授權方訪問,並按需求使用。密碼系統由5部分組成 1 明文空間m 全體明文的集合 2 密文空間c 全...
現代密碼學之DES詳解
下面是初始置換 如何操作的呢?在ip中我們先把原資料的第一位放在第58位上,第二位放到第50位上。把64位的輸入全部按照 置換。置換完畢後我們就可以進入到後面的round演算法中去了,在輸出的時候我們要通過ip 1將原資料還原。可以看到在ip 1中,我們將在第58位的位元組重新放回到第一位中,將第5...