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

📄 twofish.vhd

📁 VHDL implementation of the twofish cipher for 128,192 and 256 bit keys. The implementation is in li
💻 VHD
📖 第 1 页 / 共 5 页
字号:
--																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ------ 1 bit adder--library ieee;use ieee.std_logic_1164.all;entity adder isport	(		in1_adder,		in2_adder,		in_carry_adder	: in std_logic;		out_adder,		out_carry_adder	: out std_logic		);end adder;architecture adder_arch of adder isbegin	out_adder <= in_carry_adder XOR in1_adder XOR in2_adder;	out_carry_adder <= (in_carry_adder AND (in1_adder XOR in2_adder)) OR (in1_adder AND in2_adder);	end adder_arch;			   -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ------ pht--library ieee;use ieee.std_logic_1164.all;entity pht isport	(		up_in_pht,		down_in_pht		: in std_logic_vector(31 downto 0);		up_out_pht,		down_out_pht	: out std_logic_vector(31 downto 0)		);end pht;-- architecture descriptionarchitecture pht_arch of pht is	-- we declare internal signals	signal	intermediate_carry1,			intermediate_carry2,			to_upper_out			: std_logic_vector(31 downto 0);	signal	zero					: std_logic;		component adder	port	(			in1_adder,			in2_adder,			in_carry_adder	: in std_logic;			out_adder,			out_carry_adder	: out std_logic			);	end component;					 begin		-- initializing zero signal	zero <= '0';		-- instantiating the upper adder of 32 bits	up_adder: for i in 0 to 31 generate		adder_one: if (i=0) generate			the_adder: adder			port map	(						in1_adder => up_in_pht(0),						in2_adder => down_in_pht(0),						in_carry_adder => zero,						out_adder => to_upper_out(0),						out_carry_adder => intermediate_carry1(0)						);		end generate adder_one;		rest_adders: if (i>0) generate			next_adder: adder 			port map	(						in1_adder => up_in_pht(i),						in2_adder => down_in_pht(i),						in_carry_adder => intermediate_carry1(i-1),						out_adder => to_upper_out(i),						out_carry_adder => intermediate_carry1(i)						);		end generate rest_adders;	end generate up_adder;		intermediate_carry1(31) <= '0';		-- receiving the upper pht output	up_out_pht <= to_upper_out;		-- instantiating the lower adder of 32 bits	down_adder: for i in 0 to 31 generate		adder_one_1: if (i=0) generate			the_adder_1: adder			port map	(						in1_adder => down_in_pht(0),						in2_adder => to_upper_out(0),						in_carry_adder => zero,						out_adder => down_out_pht(0),						out_carry_adder => intermediate_carry2(0)						);		end generate adder_one_1;		rest_adders_1: if (i>0) generate			next_adder_1: adder			port map	(						in1_adder => down_in_pht(i),						in2_adder => to_upper_out(i),						in_carry_adder => intermediate_carry2(i-1),						out_adder => down_out_pht(i),						out_carry_adder => intermediate_carry2(i)						);		end generate rest_adders_1;	end generate down_adder;		intermediate_carry2(31) <= '0';	end pht_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 						--	multiplier by 01	--						library ieee;use ieee.std_logic_1164.all;entity mul01 isport	(		in_mul01	: in std_logic_vector(7 downto 0);		out_mul01	: out std_logic_vector(7 downto 0)		);end mul01;						architecture mul01_arch of mul01 isbegin	out_mul01 <= in_mul01;end mul01_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 						--	multiplier by a4	--						library ieee;use ieee.std_logic_1164.all;entity mula4 isport	(		in_mula4	: in std_logic_vector(7 downto 0);					out_mula4	: out std_logic_vector(7 downto 0)		);end mula4;architecture mula4_arch of mula4 isbegin	out_mula4(0) <= in_mula4(7) xor in_mula4(1);	out_mula4(1) <= in_mula4(2);	out_mula4(2) <= in_mula4(7) xor in_mula4(3) xor in_mula4(1) xor in_mula4(0);	out_mula4(3) <= in_mula4(7) xor in_mula4(4) xor in_mula4(2);	out_mula4(4) <= in_mula4(5) xor in_mula4(3);	out_mula4(5) <= in_mula4(6) xor in_mula4(4) xor in_mula4(0);	out_mula4(6) <= in_mula4(5);	out_mula4(7) <= in_mula4(6) xor in_mula4(0);end mula4_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 						--	multiplier by 55	--						library ieee;use ieee.std_logic_1164.all;entity mul55 isport	(		in_mul55	: in std_logic_vector(7 downto 0);		out_mul55	: out std_logic_vector(7 downto 0)		);end mul55;architecture mul55_arch of mul55 isbegin	out_mul55(0) <= in_mul55(7) xor in_mul55(6) xor in_mul55(2) xor in_mul55(0);	out_mul55(1) <= in_mul55(7) xor in_mul55(3) xor in_mul55(1);	out_mul55(2) <= in_mul55(7) xor in_mul55(6) xor in_mul55(4) xor in_mul55(0);	out_mul55(3) <= in_mul55(6) xor in_mul55(5) xor in_mul55(2) xor in_mul55(1);	out_mul55(4) <= in_mul55(7) xor in_mul55(6) xor in_mul55(3) xor in_mul55(2) xor in_mul55(0);	out_mul55(5) <= in_mul55(7) xor in_mul55(4) xor in_mul55(3) xor in_mul55(1);	out_mul55(6) <= in_mul55(7) xor in_mul55(6) xor in_mul55(5) xor in_mul55(4) xor in_mul55(0);	out_mul55(7) <= in_mul55(7) xor in_mul55(6) xor in_mul55(5) xor in_mul55(1);end mul55_arch;			  -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 						--	multiplier by 87	--						library ieee;use ieee.std_logic_1164.all;entity mul87 isport	(		in_mul87	: in std_logic_vector(7 downto 0);		out_mul87	: out std_logic_vector(7 downto 0)		);end mul87;architecture mul87_arch of mul87 isbegin	out_mul87(0) <= in_mul87(7) xor in_mul87(5) xor in_mul87(3) xor in_mul87(1) xor in_mul87(0);	out_mul87(1) <= in_mul87(6) xor in_mul87(4) xor in_mul87(2) xor in_mul87(1) xor in_mul87(0);	out_mul87(2) <= in_mul87(2) xor in_mul87(0);	out_mul87(3) <= in_mul87(7) xor in_mul87(5);	out_mul87(4) <= in_mul87(6);	out_mul87(5) <= in_mul87(7);	out_mul87(6) <= in_mul87(7) xor in_mul87(5) xor in_mul87(3) xor in_mul87(1);	out_mul87(7) <= in_mul87(6) xor in_mul87(4) xor in_mul87(2) xor in_mul87(0);end mul87_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 					--	multiplier by 5a--					library ieee;use ieee.std_logic_1164.all;entity mul5a isport	(		in_mul5a	: in std_logic_vector(7 downto 0);		out_mul5a	: out std_logic_vector(7 downto 0)		);end mul5a;architecture mul5a_arch of mul5a isbegin	out_mul5a(0) <= in_mul5a(7) xor in_mul5a(5) xor in_mul5a(2);	out_mul5a(1) <= in_mul5a(6) xor in_mul5a(3) xor in_mul5a(0);	out_mul5a(2) <= in_mul5a(5) xor in_mul5a(4) xor in_mul5a(2) xor in_mul5a(1);	out_mul5a(3) <= in_mul5a(7) xor in_mul5a(6) xor in_mul5a(3) xor in_mul5a(0);	out_mul5a(4) <= in_mul5a(7) xor in_mul5a(4) xor in_mul5a(1) xor in_mul5a(0);	out_mul5a(5) <= in_mul5a(5) xor in_mul5a(2) xor in_mul5a(1);	out_mul5a(6) <= in_mul5a(7) xor in_mul5a(6) xor in_mul5a(5) xor in_mul5a(3) xor in_mul5a(0);	out_mul5a(7) <= in_mul5a(7) xor in_mul5a(6) xor in_mul5a(4) xor in_mul5a(1);end mul5a_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 					--	multiplier by 58--					library ieee;use ieee.std_logic_1164.all;entity mul58 is port	(		in_mul58	: in std_logic_vector(7 downto 0);		out_mul58	: out std_logic_vector(7 downto 0)		);end mul58;architecture mul58_arch of mul58 isbegin	out_mul58(0) <= in_mul58(5) xor in_mul58(2);	out_mul58(1) <= in_mul58(6) xor in_mul58(3);	out_mul58(2) <= in_mul58(7) xor in_mul58(5) xor in_mul58(4) xor in_mul58(2);	out_mul58(3) <= in_mul58(6) xor in_mul58(3) xor in_mul58(2) xor in_mul58(0);	out_mul58(4) <= in_mul58(7) xor in_mul58(4) xor in_mul58(3) xor in_mul58(1) xor in_mul58(0);	out_mul58(5) <= in_mul58(5) xor in_mul58(4) xor in_mul58(2) xor in_mul58(1);	out_mul58(6) <= in_mul58(6) xor in_mul58(3) xor in_mul58(0);	out_mul58(7) <= in_mul58(7) xor in_mul58(4) xor in_mul58(1);end mul58_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 						--	multiplier by db	--						library ieee;use ieee.std_logic_1164.all;entity muldb isport	(		in_muldb	: in std_logic_vector(7 downto 0);		out_muldb	: out std_logic_vector(7 downto 0)		);end muldb;architecture muldb_arch of muldb isbegin	out_muldb(0) <= in_muldb(7) xor in_muldb(6) xor in_muldb(3) xor in_muldb(2) xor in_muldb(1) xor in_muldb(0);	out_muldb(1) <= in_muldb(7) xor in_muldb(4) xor in_muldb(3) xor in_muldb(2) xor in_muldb(1) xor in_muldb(0);	out_muldb(2) <= in_muldb(7) xor in_muldb(6) xor in_muldb(5) xor in_muldb(4);	out_muldb(3) <= in_muldb(5) xor in_muldb(3) xor in_muldb(2) xor in_muldb(1) xor in_muldb(0);	out_muldb(4) <= in_muldb(6) xor in_muldb(4) xor in_muldb(3) xor in_muldb(2) xor in_muldb(1) xor in_muldb(0);	out_muldb(5) <= in_muldb(7) xor in_muldb(5) xor in_muldb(4) xor in_muldb(3) xor in_muldb(2) xor in_muldb(1);	out_muldb(6) <= in_muldb(7) xor in_muldb(5) xor in_muldb(4) xor in_muldb(1) xor in_muldb(0);	out_muldb(7) <= in_muldb(6) xor in_muldb(5) xor in_muldb(2) xor in_muldb(1) xor in_muldb(0);end muldb_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 						--	multiplier by 9e	--						library ieee;use ieee.std_logic_1164.all;entity mul9e isport	(		in_mul9e	: in std_logic_vector(7 downto 0);		out_mul9e	: out std_logic_vector(7 downto 0)		);end mul9e;architecture mul9e_arch of mul9e isbegin	out_mul9e(0) <= in_mul9e(6) xor in_mul9e(4) xor in_mul9e(3) xor in_mul9e(1);	out_mul9e(1) <= in_mul9e(7) xor in_mul9e(5) xor in_mul9e(4) xor in_mul9e(2) xor in_mul9e(0);	out_mul9e(2) <= in_mul9e(5) xor in_mul9e(4) xor in_mul9e(0);	out_mul9e(3) <= in_mul9e(5) xor in_mul9e(4) xor in_mul9e(3) xor in_mul9e(0);	out_mul9e(4) <= in_mul9e(6) xor in_mul9e(5) xor in_mul9e(4) xor in_mul9e(1) xor in_mul9e(0);	out_mul9e(5) <= in_mul9e(7) xor in_mul9e(6) xor in_mul9e(5) xor in_mul9e(2) xor in_mul9e(1);	out_mul9e(6) <= in_mul9e(7) xor in_mul9e(4) xor in_mul9e(2) xor in_mul9e(1);	out_mul9e(7) <= in_mul9e(5) xor in_mul9e(3) xor in_mul9e(2) xor in_mul9e(0);end mul9e_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 						--	multiplier by 56	--						library ieee;use ieee.std_logic_1164.all;entity mul56 isport	(		in_mul56	: in std_logic_vector(7 downto 0);		out_mul56	: out std_logic_vector(7 downto 0)		);end mul56;architecture mul56_arch of mul56 isbegin	out_mul56(0) <= in_mul56(6) xor in_mul56(2);	out_mul56(1) <= in_mul56(7) xor in_mul56(3) xor in_mul56(0);	out_mul56(2) <= in_mul56(6) xor in_mul56(4) xor in_mul56(2) xor in_mul56(1) xor in_mul56(0);	out_mul56(3) <= in_mul56(7) xor in_mul56(6) xor in_mul56(5) xor in_mul56(3) xor in_mul56(1);	out_mul56(4) <= in_mul56(7) xor in_mul56(6) xor in_mul56(4) xor in_mul56(2) xor in_mul56(0);	out_mul56(5) <= in_mul56(7) xor in_mul56(5) xor in_mul56(3) xor in_mul56(1);	out_mul56(6) <= in_mul56(4) xor in_mul56(0);	out_mul56(7) <= in_mul56(5) xor in_mul56(1);end mul56_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 						--	multiplier by 82	--						library ieee;use ieee.std_logic_1164.all;entity mul82 isport	(		in_mul82	: in std_logic_vector(7 downto 0);		out_mul82	: out std_logic_vector(7 downto 0)		);end mul82;architecture mul82_arch of mul82 isbegin	out_mul82(0) <= in_mul82(7) xor in_mul82(6) xor in_mul82(5) xor in_mul82(3) xor in_mul82(1);	out_mul82(1) <= in_mul82(7) xor in_mul82(6) xor in_mul82(4) xor in_mul82(2) xor in_mul82(0);	out_mul82(2) <= in_mul82(6);	out_mul82(3) <= in_mul82(6) xor in_mul82(5) xor in_mul82(3) xor in_mul82(1);	out_mul82(4) <= in_mul82(7) xor in_mul82(6) xor in_mul82(4) xor in_mul82(2);	out_mul82(5) <= in_mul82(7) xor in_mul82(5) xor in_mul82(3);	out_mul82(6) <= in_mul82(7) xor in_mul82(5) xor in_mul82(4) xor in_mul82(3) xor in_mul82(1);	out_mul82(7) <= in_mul82(6) xor in_mul82(5) xor in_mul82(4) xor in_mul82(2) xor in_mul82(0);end mul82_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 						--	multiplier by f3	--						library ieee;use ieee.std_logic_1164.all;entity mulf3 isport	(		in_mulf3	: in std_logic_vector(7 downto 0);		out_mulf3	: out std_logic_vector(7 downto 0)		);end mulf3;architecture mulf3_arch of mulf3 isbegin	out_mulf3(0) <= in_mulf3(7) xor in_mulf3(6) xor in_mulf3(2) xor in_mulf3(1) xor in_mulf3(0);	out_mulf3(1) <= in_mulf3(7) xor in_mulf3(3) xor in_mulf3(2) xor in_mulf3(1) xor in_mulf3(0);	out_mulf3(2) <= in_mulf3(7) xor in_mulf3(6) xor in_mulf3(4) xor in_mulf3(3);	out_mulf3(3) <= in_mulf3(6) xor in_mulf3(5) xor in_mulf3(4) xor in_mulf3(2) xor in_mulf3(1);	out_mulf3(4) <= in_mulf3(7) xor in_mulf3(6) xor in_mulf3(5) xor in_mulf3(3) xor in_mulf3(2) xor in_mulf3(0);	out_mulf3(5) <= in_mulf3(7) xor in_mulf3(6) xor in_mulf3(4) xor in_mulf3(3) xor in_mulf3(1) xor in_mulf3(0);	out_mulf3(6) <= in_mulf3(6) xor in_mulf3(5) xor in_mulf3(4) xor in_mulf3(0);	out_mulf3(7) <= in_mulf3(7) xor in_mulf3(6) xor in_mulf3(5) xor in_mulf3(1) xor in_mulf3(0);end mulf3_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 						--	multiplier by 1e	--						library ieee;use ieee.std_logic_1164.all;entity mul1e isport	(		in_mul1e	: in std_logic_vector(7 downto 0);		out_mul1e	: out std_logic_vector(7 downto 0)		);end mul1e;architecture mul1e_arch of mul1e isbegin	out_mul1e(0) <= in_mul1e(5) xor in_mul1e(4);	out_mul1e(1) <= in_mul1e(6) xor in_mul1e(5) xor in_mul1e(0);	out_mul1e(2) <= in_mul1e(7) xor in_mul1e(6) xor in_mul1e(5) xor in_mul1e(4) xor in_mul1e(1) xor in_mul1e(0);	out_mul1e(3) <= in_mul1e(7) xor in_mul1e(6) xor in_mul1e(4) xor in_mul1e(2) xor in_mul1e(1) xor in_mul1e(0);	out_mul1e(4) <= in_mul1e(7) xor in_mul1e(5) xor in_mul1e(3) xor in_mul1e(2) xor in_mul1e(1) xor in_mul1e(0);	out_mul1e(5) <= in_mul1e(6) xor in_mul1e(4) xor in_mul1e(3) xor in_mul1e(2) xor in_mul1e(1);	out_mul1e(6) <= in_mul1e(7) xor in_mul1e(3) xor in_mul1e(2);	out_mul1e(7) <= in_mul1e(4) xor in_mul1e(3);end mul1e_arch;-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----																			---- 								new component								----																			---- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---- 						--	multiplier by c6	--						

⌨️ 快捷键说明

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