密碼學 DES密碼的C 實現

2022-08-03 07:33:10 字數 2822 閱讀 8914

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...