📄 des_cipher.v
字号:
// *******************************************************//
//
// E盒,S盒,P盒
// date:
//
// *******************************************************//
module DES_CIPHER(P, R, Ks);
input [1:32] R;
input [1:48] Ks;
output [1:32] P;
wire [1:48] E;
wire [1:48] X;
wire [1:32] S;
assign E[1:48] = { R[32],R[ 1],R[ 2],R[ 3],R[ 4],R[ 5],
R[ 4],R[ 5],R[ 6],R[ 7],R[ 8],R[ 9],
R[ 8],R[ 9],R[10],R[11],R[12],R[13],
R[12],R[13],R[14],R[15],R[16],R[17],
R[16],R[17],R[18],R[19],R[20],R[21],
R[20],R[21],R[22],R[23],R[24],R[25],
R[24],R[25],R[26],R[27],R[28],R[29],
R[28],R[29],R[30],R[31],R[32],R[ 1] };
assign X = E ^ Ks;
DES_SBOX1 u0( .addr(X[ 1:6 ]), .dout(S[ 1:4 ]) );
DES_SBOX2 u1( .addr(X[ 7:12]), .dout(S[ 5:8 ]) );
DES_SBOX3 u2( .addr(X[13:18]), .dout(S[ 9:12]) );
DES_SBOX4 u3( .addr(X[19:24]), .dout(S[13:16]) );
DES_SBOX5 u4( .addr(X[25:30]), .dout(S[17:20]) );
DES_SBOX6 u5( .addr(X[31:36]), .dout(S[21:24]) );
DES_SBOX7 u6( .addr(X[37:42]), .dout(S[25:28]) );
DES_SBOX8 u7( .addr(X[43:48]), .dout(S[29:32]) );
assign P[1:32] = {S[16],S[ 7],S[20],S[21],
S[29],S[12],S[28],S[17],
S[ 1],S[15],S[23],S[26],
S[ 5],S[18],S[31],S[10],
S[ 2],S[ 8],S[24],S[14],
S[32],S[27],S[ 3],S[ 9],
S[19],S[13],S[30],S[ 6],
S[22],S[11],S[ 4],S[ 25]};
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -