sdes code
TRANSCRIPT
-
7/25/2019 SDES CODE
1/15
library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;
entity P10 is port (key: in std_logic_vector(0 to 9); p10: out std_logic_vector(0 to 9));end;
architecture P10 of P10 isbegin p10(0)
-
7/25/2019 SDES CODE
2/15
ip(5)
-
7/25/2019 SDES CODE
3/15
end if;when SXOR=>
out_en
-
7/25/2019 SDES CODE
4/15
library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;
entity SW is port (input: in std_logic_vector(0 to 7); switched : out std_logic_vector(0 to 7));end;
architecture SW of SW isbegin switched(0)
-
7/25/2019 SDES CODE
5/15
library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;
entity EP is port(input: in std_logic_vector(0 to 3); eped: out std_logic_vector(0 to 7));end;
architecture EP of EP isbegin eped(0)
-
7/25/2019 SDES CODE
6/15
library IEEE;use IEEE.std_logic_1164.all;
entity reg8 isport (
en,clk: in std_logic;inp: in std_logic_vector(0 to 7);outp: out std_logic_vector(0 to 7));
end reg8;
architecture rtl of reg8 isbegin
seq: process (en,clk,inp)begin
if en='1' thenif rising_edge(clk) then
outp
-
7/25/2019 SDES CODE
7/15
beginif en='1' then
if rising_edge(clk) thenoutp
-
7/25/2019 SDES CODE
8/15
end process;end;
library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;
entity F is port (clk, rst, en_f:in std_logic;
input: in std_logic_vector(0 to 3); key: in std_logic_vector(0 to 7); fed : out std_logic_vector(0 to 3);
outen_f: out std_logic);end;
architecture F of F iscomponent S0
port(input: in std_logic_vector(0 to 3);output: out std_logic_vector(0 to 1));
end component;component S1
port(input: in std_logic_vector(0 to 3);output: out std_logic_vector(0 to 1));
end component;
component EPport(input: in std_logic_vector(0 to 3);eped: out std_logic_vector(0 to 7));
end component;component P4
port(input: in std_logic_vector(0 to 3);p4ed: out std_logic_vector(0 to 3));
end component;component reg2
port (en,clk: in std_logic;inp: in std_logic_vector(0 to 1);outp: out std_logic_vector(0 to 1));
end component;component reg4
port (en,clk: in std_logic;inp: in std_logic_vector(0 to 3);outp: out std_logic_vector(0 to 3));
end component;component reg8
port (en,clk: in std_logic;inp: in std_logic_vector(0 to 7);outp: out std_logic_vector(0 to 7));
end component;
component XOR8port (inp1: in std_logic_vector(0 to 7);inp2: in std_logic_vector(0 to 7);outp: out std_logic_vector(0 to 7));
end component;component FFSMport (clk, rst, en_f: in std_logic;
sig_ep, sig_xor, sig_s0s1: out std_logic;out_en: out std_logic);
-
7/25/2019 SDES CODE
9/15
end component;signal eped, r_eped, xored, r_xored: std_logic_vector(0 to 7);signal p4ed: std_logic_vector(0 to 3);signal esed0, r_esed0, esed1, r_esed1: std_logic_vector(0 to 1);signal sig_ep, sig_xor, sig_s0s1, out_en: std_logic;begin
EX: EP port map(input, eped);R_81: reg8 port map(sig_ep,clk,eped,r_eped);S_XOR: XOR8 port map(r_eped, key, xored);R_82: reg8 port map(sig_xor,clk,xored,r_xored);S_0: S0 port map(r_xored(0 to 3), esed0);R_21: reg2 port map(sig_s0s1,clk,esed0, r_esed0);S_1: S1 port map(r_xored(4 to 7), esed1);R_22: reg2 port map(sig_s0s1,clk,esed1, r_esed1);P_4: P4 port map(input(0 to 1)=>r_esed0, input(2 to 3)=>r_esed1, p4ed=>p
4ed);R_41: reg4 port map(out_en,clk,p4ed,fed);FCTRL: FFSM port map(clk, rst, en_f, sig_ep, sig_xor, sig_s0s1, out_en);outen_f
-
7/25/2019 SDES CODE
10/15
end;
architecture LS1 of LS1 isbegin
ls1
-
7/25/2019 SDES CODE
11/15
state
sig_p8
-
7/25/2019 SDES CODE
12/15
signal p8ed1, p8ed2: std_logic_vector(0 to 7);signal sig_p10, sig_p8 ,sig_ls1, sig_ls2, out_en: std_logic;begin
P_10: P10 port map(key10, p10ed);R_101: reg10 port map(sig_p10,clk,p10ed,r_p10ed);LS_1: LS1 port map(r_p10ed, lsed1);R_102: reg10 port map(sig_ls1,clk,lsed1,r_lsed1);P_81: P8 port map(r_lsed1, p8ed1);R_81: reg8 port map(sig_p8,clk,p8ed1,key2_8(0 to 7));LS_2: LS2 port map(r_lsed1, lsed2);R_103: reg10 port map(sig_ls2,clk,lsed2,r_lsed2);P_82: P8 port map(r_lsed2,p8ed2);R_82: reg8 port map(out_en,clk,p8ed2,key2_8(8 to 15));KEYFSM: KFSM port map(clk, rst, sig_p10, sig_p8, sig_ls1, sig_ls2, out_e
n);keys_ready
-
7/25/2019 SDES CODE
13/15
state out_en
-
7/25/2019 SDES CODE
14/15
sig_ip, sig_sw: out std_logic;out_en: out std_logic);
end component;signal switch, r_switch, fked1, fked2: std_logic_vector(0 to 7);signal r_fked1,r_fked2, riped, iped, r_iped: std_logic_vector(0 to 7);signal sig_ip, sig_sw, out_en, en_fk1, en_fk2, keys_ready: std_logic;signal keys: std_logic_vector(0 to 15);
beginKK: KEYGEN port map(clk,rst,key,keys, keys_ready);IP_0: IP port map(input, iped);R_81: reg8 port map(sig_ip,clk,iped,r_iped);FK1: Fk port map(clk, rst, keys_ready, r_iped, keys(0 to 7), fked1, en_f
k1);R_82: reg8 port map(en_fk1,clk,fked1,r_fked1);SW_0: SW port map(r_fked1, switch);R_83: reg8 port map(sig_sw,clk,switch,r_switch);FK2: Fk port map(clk, rst, sig_sw, r_switch, keys(8 to 15), fked2, en_fk
2);R_84: reg8 port map(en_fk2,clk,fked2,r_fked2);RIP_0: RIP port map(r_fked2, riped);R_85: reg8 port map(out_en,clk,riped,output);ACTRL: SFSM port map(clk, rst, en_fk1, en_fk2, sig_ip, sig_sw, out_en);
end;
--------------- decrypt ---------------library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;use IEEE.numeric_std.all;
entity r_sdes is port(clk, rst: std_logic;
input :in std_logic_vector(0 to 7); key: in std_logic_vector(0 to 9);
output: out std_logic_vector(0 to 7));end;
architecture r_sdes of r_sdes iscomponent reg8
port (en,clk: in std_logic;inp: in std_logic_vector(0 to 7);outp: out std_logic_vector(0 to 7));
end component;component IP port (input: in std_logic_vector(0 to 7);
ip : out std_logic_vector(0 to 7));end component;
component Fkport (clk, rst, en: in std_logic;ip: in std_logic_vector(0 to 7);key : in std_logic_vector(0 to 7);fked : out std_logic_vector(0 to 7);outen_fk: out std_logic);
end component;component SW
port (input: in std_logic_vector(0 to 7);switched : out std_logic_vector(0 to 7));
-
7/25/2019 SDES CODE
15/15
end component;component RIP port (input: in std_logic_vector(0 to 7);
rip : out std_logic_vector(0 to 7));end component;component KEYGEN
port (clk, rst: in std_logic;key10: in std_logic_vector(0 to 9);key2_8: out std_logic_vector(0 to 15);keys_ready: out std_logic);
end component;component SFSM
port (clk, rst: in std_logic;sig_fk1, sig_fk2: in std_logic;sig_ip, sig_sw: out std_logic;out_en: out std_logic);
end component;signal switch, r_switch, fked1, fked2: std_logic_vector(0 to 7);signal r_fked1,r_fked2, riped, iped, r_iped: std_logic_vector(0 to 7);signal sig_ip, sig_sw, out_en, en_fk1, en_fk2, keys_ready: std_logic;signal keys: std_logic_vector(0 to 15);
beginKKR: KEYGEN port map(clk,rst,key,keys, keys_ready);IP_0R: IP port map(input, iped);
R_81R: reg8 port map(sig_ip,clk,iped,r_iped);FK1R: Fk port map(clk, rst, keys_ready, r_iped, keys(8 to 15), fked1, en_fk1);
R_82R: reg8 port map(en_fk1,clk,fked1,r_fked1);SW_0R: SW port map(r_fked1, switch);R_83R: reg8 port map(sig_sw,clk,switch,r_switch);FK2R: Fk port map(clk, rst, sig_sw, r_switch, keys(0 to 7), fked2, en_fk
2);R_84R: reg8 port map(en_fk2,clk,fked2,r_fked2);RIP_0R: RIP port map(r_fked2, riped);R_85R: reg8 port map(out_en,clk,riped,output);ACTRLR: SFSM port map(clk, rst, en_fk1, en_fk2, sig_ip, sig_sw, out_en);
end;