⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aes_package.vhd

📁 Consecutive AES core Description of project.. Features - AES encoder - 128/192/256 bit -
💻 VHD
📖 第 1 页 / 共 3 页
字号:
  when "11101101" => inv_data := X"53";  when "11101110" => inv_data := X"99";  when "11101111" => inv_data := X"61";  when "11110000" => inv_data := X"17";  when "11110001" => inv_data := X"2b";  when "11110010" => inv_data := X"04";  when "11110011" => inv_data := X"7e";  when "11110100" => inv_data := X"ba";  when "11110101" => inv_data := X"77";  when "11110110" => inv_data := X"d6";  when "11110111" => inv_data := X"26";  when "11111000" => inv_data := X"e1";  when "11111001" => inv_data := X"69";  when "11111010" => inv_data := X"14";  when "11111011" => inv_data := X"63";  when "11111100" => inv_data := X"55";  when "11111101" => inv_data := X"21";  when "11111110" => inv_data := X"0c";  when "11111111" => inv_data := X"7d";  when others => null;  end case;inv_data_stdlogic := to_StdLogicVector(inv_data);return inv_data_stdlogic;end function inv_sbox_val;function col_transform(p: state_array_type) return std_logic_vector is variable result: std_logic_vector(7 downto 0); variable m,n: std_logic_vector(7 downto 0); begin    if(p(0)(7) = '1') then     m := (p(0)(6 downto 0) & '0') xor "00011011";   else     m := (p(0)(6 downto 0) & '0');   end if;   if(p(1)(7) = '1') then     n := (p(1)(6 downto 0) & '0') xor "00011011" xor p(1);   else     n := (p(1)(6 downto 0) & '0') xor p(1);   end if;   result := m xor n xor p(2) xor p(3);   return result;end function col_transform;function col_inv_transform(s: state_array_type) return std_logic_vector isvariable result: std_logic_vector(7 downto 0);variable sub0,sub1,sub2,sub3: std_logic_vector(7 downto 0);variable x0,y0,z0: std_logic_vector(7 downto 0);variable x1,y1,z1: std_logic_vector(7 downto 0);variable x2,y2,z2: std_logic_vector(7 downto 0);variable x3,y3,z3: std_logic_vector(7 downto 0);begin  if(s(0)(7) = '1') then    x0 := (s(0)(6 downto 0) & '0') xor "00011011";  else    x0 := (s(0)(6 downto 0) & '0');  end if;  if(x0(7) = '1') then    y0 := (x0(6 downto 0) & '0') xor "00011011";  else    y0 := (x0(6 downto 0) & '0');  end if;  if(y0(7) = '1') then    z0 := (y0(6 downto 0) & '0') xor "00011011";  else    z0 := (y0(6 downto 0) & '0');  end if;  sub0 := (x0 xor y0 xor z0);----------  if(s(1)(7) = '1') then    x1 := (s(1)(6 downto 0) & '0') xor "00011011";  else    x1 := (s(1)(6 downto 0) & '0');  end if;  if(x1(7) = '1') then    y1 := (x1(6 downto 0) & '0') xor "00011011";  else    y1 := (x1(6 downto 0) & '0');  end if;  if(y1(7) = '1') then    z1 := (y1(6 downto 0) & '0') xor "00011011";  else    z1 := (y1(6 downto 0) & '0');  end if;  sub1 := (x1 xor z1 xor s(1));----------  if(s(2)(7) = '1') then    x2 := (s(2)(6 downto 0) & '0') xor "00011011";  else    x2 := (s(2)(6 downto 0) & '0');  end if;  if(x2(7) = '1') then    y2 := (x2(6 downto 0) & '0') xor "00011011";  else    y2 := (x2(6 downto 0) & '0');  end if;  if(y2(7) = '1') then    z2 := (y2(6 downto 0) & '0') xor "00011011";  else    z2 := (y2(6 downto 0) & '0');  end if;  sub2 := (y2 xor z2 xor s(2));----------  if(s(3)(7) = '1') then    x3 := (s(3)(6 downto 0) & '0') xor "00011011";  else    x3 := (s(3)(6 downto 0) & '0');  end if;  if(x3(7) = '1') then    y3 := (x3(6 downto 0) & '0') xor "00011011";  else    y3 := (x3(6 downto 0) & '0');  end if;  if(y3(7) = '1') then    z3 := (y3(6 downto 0) & '0') xor "00011011";  else    z3 := (y3(6 downto 0) & '0');  end if;  sub3 := (z3 xor s(3));----------    result := sub0 xor sub1 xor sub2 xor sub3;  return result;end function col_inv_transform;-- combo logic for mix columnsfunction mix_cols_routine     (       a_r0 :state_array_type;       a_r1 :state_array_type;       a_r2 :state_array_type;       a_r3 :state_array_type;       mode :std_logic     )return std_logic_vector isvariable b      : std_logic_vector(0 to 127);variable b0     : state_array_type;variable b1     : state_array_type;variable b2     : state_array_type;variable b3     : state_array_type;-------------------------------------------------variable b_0_0  : std_logic_vector(7 downto 0);variable s_0_0  : state_array_type;--------------------------------------------------variable b_0_1  : std_logic_vector(7 downto 0);variable s_0_1  : state_array_type;--------------------------------------------------variable b_0_2  : std_logic_vector(7 downto 0);variable s_0_2  : state_array_type;----------------------------------------------variable b_0_3  : std_logic_vector(7 downto 0);variable s_0_3  : state_array_type;----------------------------------------------variable b_1_0  : std_logic_vector(7 downto 0);variable s_1_0  : state_array_type;----------------------------------------------variable b_1_1  : std_logic_vector(7 downto 0);variable s_1_1  : state_array_type;----------------------------------------------variable b_1_2  : std_logic_vector(7 downto 0);variable s_1_2  : state_array_type;----------------------------------------------variable b_1_3  : std_logic_vector(7 downto 0);variable s_1_3  : state_array_type;----------------------------------------------variable b_2_0  : std_logic_vector(7 downto 0);variable s_2_0  : state_array_type;----------------------------------------------variable b_2_1  : std_logic_vector(7 downto 0);variable s_2_1  : state_array_type;----------------------------------------------variable b_2_2  : std_logic_vector(7 downto 0);variable s_2_2  : state_array_type;----------------------------------------------variable b_2_3  : std_logic_vector(7 downto 0);variable s_2_3  : state_array_type;----------------------------------------------variable b_3_0  : std_logic_vector(7 downto 0);variable s_3_0  : state_array_type;----------------------------------------------variable b_3_1  : std_logic_vector(7 downto 0);variable s_3_1  : state_array_type;----------------------------------------------variable b_3_2  : std_logic_vector(7 downto 0);variable s_3_2  : state_array_type;----------------------------------------------variable b_3_3  : std_logic_vector(7 downto 0);variable s_3_3  : state_array_type;--------------------------------------------------beginif(mode = '1') then  s_0_0 := a_r0;  b_0_0 := col_transform(s_0_0);------------------------------------------------------  s_0_1 := a_r1;  b_0_1 := col_transform(s_0_1);------------------------------------------------------  s_0_2 := a_r2;  b_0_2 := col_transform(s_0_2);------------------------------------------------------  s_0_3 := a_r3;  b_0_3 := col_transform(s_0_3);--****************************************************************  s_1_0 := (a_r0(1),a_r0(2),a_r0(3),a_r0(0));  b_1_0 := col_transform(s_1_0);------------------------------------------------------  s_1_1 := (a_r1(1),a_r1(2),a_r1(3),a_r1(0));  b_1_1 := col_transform(s_1_1);------------------------------------------------------  s_1_2 := (a_r2(1),a_r2(2),a_r2(3),a_r2(0));  b_1_2 := col_transform(s_1_2);------------------------------------------------------  s_1_3 := (a_r3(1),a_r3(2),a_r3(3),a_r3(0));  b_1_3 := col_transform(s_1_3);--****************************************************************  s_2_0 := (a_r0(2),a_r0(3),a_r0(0),a_r0(1));  b_2_0 := col_transform(s_2_0);------------------------------------------------------  s_2_1 := (a_r1(2),a_r1(3),a_r1(0),a_r1(1));  b_2_1 := col_transform(s_2_1);------------------------------------------------------  s_2_2 := (a_r2(2),a_r2(3),a_r2(0),a_r2(1));  b_2_2 := col_transform(s_2_2);------------------------------------------------------  s_2_3 := (a_r3(2),a_r3(3),a_r3(0),a_r3(1));  b_2_3 := col_transform(s_2_3);--****************************************************************  s_3_0 := (a_r0(3),a_r0(0),a_r0(1),a_r0(2));  b_3_0 := col_transform(s_3_0);------------------------------------------------------  s_3_1 := (a_r1(3),a_r1(0),a_r1(1),a_r1(2));  b_3_1 := col_transform(s_3_1);------------------------------------------------------  s_3_2 := (a_r2(3),a_r2(0),a_r2(1),a_r2(2));  b_3_2 := col_transform(s_3_2);------------------------------------------------------  s_3_3 := (a_r3(3),a_r3(0),a_r3(1),a_r3(2));  b_3_3 := col_transform(s_3_3);--****************************************************************else         s_0_0 := a_r0;  b_0_0 := col_inv_transform(s_0_0);------------------------------------------------------  s_0_1 := a_r1;  b_0_1 := col_inv_transform(s_0_1);------------------------------------------------------  s_0_2 := a_r2;  b_0_2 := col_inv_transform(s_0_2);------------------------------------------------------  s_0_3 := a_r3;  b_0_3 := col_inv_transform(s_0_3);--****************************************************************  s_1_0 := (a_r0(1),a_r0(2),a_r0(3),a_r0(0));  b_1_0 := col_inv_transform(s_1_0);------------------------------------------------------  s_1_1 := (a_r1(1),a_r1(2),a_r1(3),a_r1(0));  b_1_1 := col_inv_transform(s_1_1);------------------------------------------------------  s_1_2 := (a_r2(1),a_r2(2),a_r2(3),a_r2(0));  b_1_2 := col_inv_transform(s_1_2);------------------------------------------------------  s_1_3 := (a_r3(1),a_r3(2),a_r3(3),a_r3(0));  b_1_3 := col_inv_transform(s_1_3);--****************************************************************  s_2_0 := (a_r0(2),a_r0(3),a_r0(0),a_r0(1));  b_2_0 := col_inv_transform(s_2_0);------------------------------------------------------  s_2_1 := (a_r1(2),a_r1(3),a_r1(0),a_r1(1));  b_2_1 := col_inv_transform(s_2_1);------------------------------------------------------  s_2_2 := (a_r2(2),a_r2(3),a_r2(0),a_r2(1));  b_2_2 := col_inv_transform(s_2_2);------------------------------------------------------  s_2_3 := (a_r3(2),a_r3(3),a_r3(0),a_r3(1));  b_2_3 := col_inv_transform(s_2_3);--****************************************************************  s_3_0 := (a_r0(3),a_r0(0),a_r0(1),a_r0(2));  b_3_0 := col_inv_transform(s_3_0);------------------------------------------------------  s_3_1 := (a_r1(3),a_r1(0),a_r1(1),a_r1(2));  b_3_1 := col_inv_transform(s_3_1);------------------------------------------------------  s_3_2 := (a_r2(3),a_r2(0),a_r2(1),a_r2(2));  b_3_2 := col_inv_transform(s_3_2);------------------------------------------------------  s_3_3 := (a_r3(3),a_r3(0),a_r3(1),a_r3(2));  b_3_3 := col_inv_transform(s_3_3);--****************************************************************end if;b := (b_0_0 & b_1_0 & b_2_0 & b_3_0 & b_0_1 & b_1_1 & b_2_1 & b_3_1 &      b_0_2 & b_1_2 & b_2_2 & b_3_2 & b_0_3 & b_1_3 & b_2_3 & b_3_3);return b;end function mix_cols_routine;end package body aes_package;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -