📄 des.vhd
字号:
when "010010" => val(3 downto 0) := "1001"; when "010011" => val(3 downto 0) := "0101";
when "010100" => val(3 downto 0) := "0011"; when "010101" => val(3 downto 0) := "0110";
when "010110" => val(3 downto 0) := "1110"; when "010111" => val(3 downto 0) := "1011";
when "011000" => val(3 downto 0) := "0101"; when "011001" => val(3 downto 0) := "0000";
when "011010" => val(3 downto 0) := "0000"; when "011011" => val(3 downto 0) := "1110";
when "011100" => val(3 downto 0) := "1100"; when "011101" => val(3 downto 0) := "1001";
when "011110" => val(3 downto 0) := "0111"; when "011111" => val(3 downto 0) := "0010";
when "100000" => val(3 downto 0) := "0111"; when "100001" => val(3 downto 0) := "0010";
when "100010" => val(3 downto 0) := "1011"; when "100011" => val(3 downto 0) := "0001";
when "100100" => val(3 downto 0) := "0100"; when "100101" => val(3 downto 0) := "1110";
when "100110" => val(3 downto 0) := "0001"; when "100111" => val(3 downto 0) := "0111";
when "101000" => val(3 downto 0) := "1001"; when "101001" => val(3 downto 0) := "0100";
when "101010" => val(3 downto 0) := "1100"; when "101011" => val(3 downto 0) := "1010";
when "101100" => val(3 downto 0) := "1110"; when "101101" => val(3 downto 0) := "1000";
when "101110" => val(3 downto 0) := "0010"; when "101111" => val(3 downto 0) := "1101";
when "110000" => val(3 downto 0) := "0000"; when "110001" => val(3 downto 0) := "1111";
when "110010" => val(3 downto 0) := "0110"; when "110011" => val(3 downto 0) := "1100";
when "110100" => val(3 downto 0) := "1010"; when "110101" => val(3 downto 0) := "1001";
when "110110" => val(3 downto 0) := "1101"; when "110111" => val(3 downto 0) := "0000";
when "111000" => val(3 downto 0) := "1111"; when "111001" => val(3 downto 0) := "0011";
when "111010" => val(3 downto 0) := "0011"; when "111011" => val(3 downto 0) := "0101";
when "111100" => val(3 downto 0) := "0101"; when "111101" => val(3 downto 0) := "0110";
when "111110" => val(3 downto 0) := "1000"; when "111111" => val(3 downto 0) := "1011";
when others => val(3 downto 0) := "1011";
end case;
-- SBOX 7
case din(11 downto 6) is
when "000000" => val(7 downto 4) := "0100"; when "000001" => val(7 downto 4) := "1101";
when "000010" => val(7 downto 4) := "1011"; when "000011" => val(7 downto 4) := "0000";
when "000100" => val(7 downto 4) := "0010"; when "000101" => val(7 downto 4) := "1011";
when "000110" => val(7 downto 4) := "1110"; when "000111" => val(7 downto 4) := "0111";
when "001000" => val(7 downto 4) := "1111"; when "001001" => val(7 downto 4) := "0100";
when "001010" => val(7 downto 4) := "0000"; when "001011" => val(7 downto 4) := "1001";
when "001100" => val(7 downto 4) := "1000"; when "001101" => val(7 downto 4) := "0001";
when "001110" => val(7 downto 4) := "1101"; when "001111" => val(7 downto 4) := "1010";
when "010000" => val(7 downto 4) := "0011"; when "010001" => val(7 downto 4) := "1110";
when "010010" => val(7 downto 4) := "1100"; when "010011" => val(7 downto 4) := "0011";
when "010100" => val(7 downto 4) := "1001"; when "010101" => val(7 downto 4) := "0101";
when "010110" => val(7 downto 4) := "0111"; when "010111" => val(7 downto 4) := "1100";
when "011000" => val(7 downto 4) := "0101"; when "011001" => val(7 downto 4) := "0010";
when "011010" => val(7 downto 4) := "1010"; when "011011" => val(7 downto 4) := "1111";
when "011100" => val(7 downto 4) := "0110"; when "011101" => val(7 downto 4) := "1000";
when "011110" => val(7 downto 4) := "0001"; when "011111" => val(7 downto 4) := "0110";
when "100000" => val(7 downto 4) := "0001"; when "100001" => val(7 downto 4) := "0110";
when "100010" => val(7 downto 4) := "0100"; when "100011" => val(7 downto 4) := "1011";
when "100100" => val(7 downto 4) := "1011"; when "100101" => val(7 downto 4) := "1101";
when "100110" => val(7 downto 4) := "1101"; when "100111" => val(7 downto 4) := "1000";
when "101000" => val(7 downto 4) := "1100"; when "101001" => val(7 downto 4) := "0001";
when "101010" => val(7 downto 4) := "0011"; when "101011" => val(7 downto 4) := "0100";
when "101100" => val(7 downto 4) := "0111"; when "101101" => val(7 downto 4) := "1010";
when "101110" => val(7 downto 4) := "1110"; when "101111" => val(7 downto 4) := "0111";
when "110000" => val(7 downto 4) := "1010"; when "110001" => val(7 downto 4) := "1001";
when "110010" => val(7 downto 4) := "1111"; when "110011" => val(7 downto 4) := "0101";
when "110100" => val(7 downto 4) := "0110"; when "110101" => val(7 downto 4) := "0000";
when "110110" => val(7 downto 4) := "1000"; when "110111" => val(7 downto 4) := "1111";
when "111000" => val(7 downto 4) := "0000"; when "111001" => val(7 downto 4) := "1110";
when "111010" => val(7 downto 4) := "0101"; when "111011" => val(7 downto 4) := "0010";
when "111100" => val(7 downto 4) := "1001"; when "111101" => val(7 downto 4) := "0011";
when "111110" => val(7 downto 4) := "0010"; when "111111" => val(7 downto 4) := "1100";
when others => val(7 downto 4) := "1100";
end case;
-- SBOX 6
case din(17 downto 12) is
when "000000" => val(11 downto 8) := "1100"; when "000001" => val(11 downto 8) := "1010";
when "000010" => val(11 downto 8) := "0001"; when "000011" => val(11 downto 8) := "1111";
when "000100" => val(11 downto 8) := "1010"; when "000101" => val(11 downto 8) := "0100";
when "000110" => val(11 downto 8) := "1111"; when "000111" => val(11 downto 8) := "0010";
when "001000" => val(11 downto 8) := "1001"; when "001001" => val(11 downto 8) := "0111";
when "001010" => val(11 downto 8) := "0010"; when "001011" => val(11 downto 8) := "1100";
when "001100" => val(11 downto 8) := "0110"; when "001101" => val(11 downto 8) := "1001";
when "001110" => val(11 downto 8) := "1000"; when "001111" => val(11 downto 8) := "0101";
when "010000" => val(11 downto 8) := "0000"; when "010001" => val(11 downto 8) := "0110";
when "010010" => val(11 downto 8) := "1101"; when "010011" => val(11 downto 8) := "0001";
when "010100" => val(11 downto 8) := "0011"; when "010101" => val(11 downto 8) := "1101";
when "010110" => val(11 downto 8) := "0100"; when "010111" => val(11 downto 8) := "1110";
when "011000" => val(11 downto 8) := "1110"; when "011001" => val(11 downto 8) := "0000";
when "011010" => val(11 downto 8) := "0111"; when "011011" => val(11 downto 8) := "1011";
when "011100" => val(11 downto 8) := "0101"; when "011101" => val(11 downto 8) := "0011";
when "011110" => val(11 downto 8) := "1011"; when "011111" => val(11 downto 8) := "1000";
when "100000" => val(11 downto 8) := "1001"; when "100001" => val(11 downto 8) := "0100";
when "100010" => val(11 downto 8) := "1110"; when "100011" => val(11 downto 8) := "0011";
when "100100" => val(11 downto 8) := "1111"; when "100101" => val(11 downto 8) := "0010";
when "100110" => val(11 downto 8) := "0101"; when "100111" => val(11 downto 8) := "1100";
when "101000" => val(11 downto 8) := "0010"; when "101001" => val(11 downto 8) := "1001";
when "101010" => val(11 downto 8) := "1000"; when "101011" => val(11 downto 8) := "0101";
when "101100" => val(11 downto 8) := "1100"; when "101101" => val(11 downto 8) := "1111";
when "101110" => val(11 downto 8) := "0011"; when "101111" => val(11 downto 8) := "1010";
when "110000" => val(11 downto 8) := "0111"; when "110001" => val(11 downto 8) := "1011";
when "110010" => val(11 downto 8) := "0000"; when "110011" => val(11 downto 8) := "1110";
when "110100" => val(11 downto 8) := "0100"; when "110101" => val(11 downto 8) := "0001";
when "110110" => val(11 downto 8) := "1010"; when "110111" => val(11 downto 8) := "0111";
when "111000" => val(11 downto 8) := "0001"; when "111001" => val(11 downto 8) := "0110";
when "111010" => val(11 downto 8) := "1101"; when "111011" => val(11 downto 8) := "0000";
when "111100" => val(11 downto 8) := "1011"; when "111101" => val(11 downto 8) := "1000";
when "111110" => val(11 downto 8) := "0110"; when "111111" => val(11 downto 8) := "1101";
when others => val(11 downto 8) := "1101";
end case;
-- SBOX 5
case din(23 downto 18) is
when "000000" => val(15 downto 12) := "0010"; when "000001" => val(15 downto 12) := "1110";
when "000010" => val(15 downto 12) := "1100"; when "000011" => val(15 downto 12) := "1011";
when "000100" => val(15 downto 12) := "0100"; when "000101" => val(15 downto 12) := "0010";
when "000110" => val(15 downto 12) := "0001"; when "000111" => val(15 downto 12) := "1100";
when "001000" => val(15 downto 12) := "0111"; when "001001" => val(15 downto 12) := "0100";
when "001010" => val(15 downto 12) := "1010"; when "001011" => val(15 downto 12) := "0111";
when "001100" => val(15 downto 12) := "1011"; when "001101" => val(15 downto 12) := "1101";
when "001110" => val(15 downto 12) := "0110"; when "001111" => val(15 downto 12) := "0001";
when "010000" => val(15 downto 12) := "1000"; when "010001" => val(15 downto 12) := "0101";
when "010010" => val(15 downto 12) := "0101"; when "010011" => val(15 downto 12) := "0000";
when "010100" => val(15 downto 12) := "0011"; when "010101" => val(15 downto 12) := "1111";
when "010110" => val(15 downto 12) := "1111"; when "010111" => val(15 downto 12) := "1010";
when "011000" => val(15 downto 12) := "1101"; when "011001" => val(15 downto 12) := "0011";
when "011010" => val(15 downto 12) := "0000"; when "011011" => val(15 downto 12) := "1001";
when "011100" => val(15 downto 12) := "1110"; when "011101" => val(15 downto 12) := "1000";
when "011110" => val(15 downto 12) := "1001"; when "011111" => val(15 downto 12) := "0110";
when "100000" => val(15 downto 12) := "0100"; when "100001" => val(15 downto 12) := "1011";
when "100010" => val(15 downto 12) := "0010"; when "100011" => val(15 downto 12) := "1000";
when "100100" => val(15 downto 12) := "0001"; when "100101" => val(15 downto 12) := "1100";
when "100110" => val(15 downto 12) := "1011"; when "100111" => val(15 downto 12) := "0111";
when "101000" => val(15 downto 12) := "1010"; when "101001" => val(15 downto 12) := "0001";
when "101010" => val(15 downto 12) := "1101"; when "101011" => val(15 downto 12) := "1110";
when "101100" => val(15 downto 12) := "0111"; when "101101" => val(15 downto 12) := "0010";
when "101110" => val(15 downto 12) := "1000"; when "101111" => val(15 downto 12) := "1101";
when "110000" => val(15 downto 12) := "1111"; when "110001" => val(15 downto 12) := "0110";
when "110010" => val(15 downto 12) := "1001"; when "110011" => val(15 downto 12) := "1111";
when "110100" => val(15 downto 12) := "1100"; when "110101" => val(15 downto 12) := "0000";
when "110110" => val(15 downto 12) := "0101"; when "110111" => val(15 downto 12) := "1001";
when "111000" => val(15 downto 12) := "0110"; when "111001" => val(15 downto 12) := "1010";
when "111010" => val(15 downto 12) := "0011"; when "111011" => val(15 downto 12) := "0100";
when "111100" => val(15 downto 12) := "0000"; when "111101" => val(15 downto 12) := "0101";
when "111110" => val(15 downto 12) := "1110"; when "111111" => val(15 downto 12) := "0011";
when others => val(15 downto 12) := "0011";
end case;
-- SBOX 4
case din(29 downto 24) is
when "000000" => val(19 downto 16) := "0111"; when "000001" => val(19 downto 16) := "1101";
when "000010" => val(19 downto 16) := "1101"; when "000011" => val(19 downto 16) := "1000";
when "000100" => val(19 downto 16) := "1110"; when "000101" => val(19 downto 16) := "1011";
when "000110" => val(19 downto 16) := "0011"; when "000111" => val(19 downto 16) := "0101";
when "001000" => val(19 downto 16) := "0000"; when "001001" => val(19 downto 16) := "0110";
when "001010" => val(19 downto 16) := "0110"; when "001011" => val(19 downto 16) := "1111";
when "001100" => val(19 downto 16) := "1001"; when "001101" => val(19 downto 16) := "0000";
when "001110" => val(19 downto 16) := "1010"; when "001111" => val(19 downto 16) := "0011";
when "010000" => val(19 downto 16) := "0001"; when "010001" => val(19 downto 16) := "0100";
when "010010" => val(19 downto 16) := "0010"; when "010011" => val(19 downto 16) := "0111";
when "010100" => val(19 downto 16) := "1000"; when "010101" => val(19 downto 16) := "0010";
when "010110" => val(19 downto 16) := "0101"; when "010111" => val(19 downto 16) := "1100";
when "011000" => val(19 downto 16) := "1011"; when "011001" => val(19 downto 16) := "0001";
when "011010" => val(19 downto 16) := "1100"; when "011011" => val(19 downto 16) := "1010";
when "011100" => val(19 downto 16) := "0100"; when "011101" => val(19 downto 16) := "1110";
when "011110" => val(19 downto 16) := "1111"; when "011111" => val(19 downto 16) := "1001";
when "100000" => val(19 downto 16) := "1010"; when "100001" => val(19 downto 16) := "0011";
when "100010" => val(19 downto 16) := "0110"; when "100011" => val(19 downto 16) := "1111";
when "100100" => val(19 downto 16) := "1001"; when "100101" => val(19 downto 16) := "0000";
when "100110" => val(19 downto 16) := "0000"; when "100111" => val(19 downto 16) := "0110";
when "101000" => val(19 downto 16) := "1100"; when "101001" => val(19 downto 16) := "1010";
when "101010" => val(19 downto 16) := "1011"; when "101011" => val(19 downto 16) := "0001";
when "101100" => val(19 downto 16) := "0111"; when "101101" => val(19 downto 16) := "1101";
when "101110" => val(19 downto 16) := "1101"; when "101111" => val(19 downto 16) := "1000";
when "110000" => val(19 downto 16) := "1111"; when "110001" => val(19 downto 16) := "1001";
when "110010" => val(19 downto 16) := "0001"; when "110011" => val(19 downto 16) := "0100";
when "110100" => val(19 downto 16) := "0011"; when "110101" => val(19 downto 16) := "0101";
when "110110" => val(19 downto 16) := "1110"; when "110111" => val(19 downto 16) := "1011";
when "111000" => val(19 downto 16) := "0101"; when "111001" => val(19 downto 16) := "1100";
when "111010" => val(19 downto 16) := "0010"; when "111011" => val(19 downto 16) := "0111";
when "111100" => val(19 downto 16) := "1000"; when "111101" => val(19 downto 16) := "0010";
when "111110" => val(19 downto 16) := "0100"; when "111111" => val(19 downto 16) := "1110";
when others => val(19 downto 16) := "1110";
end case;
-- SBOX 3
case din(35 downto 30) is
when "000000" => val(23 downto 20) := "1010"; when "000001" => val(23 downto 20) := "1101";
when "000010" => val(23 downto 20) := "0000"; when "000011" => val(23 downto 20) := "0111";
when "000100" => val(23 downto 20) := "1001"; when "000101" => val(23 downto 20) := "0000";
when "000110" => val(23 downto 20) := "1110"; when "000111" => val(23 downto 20) := "1001";
when "001000" => val(23 downto 20) := "0110"; when "001001" => val(23 downto 20) := "0011";
when "001010" => val(23 downto 20) := "0011"; when "001011" => val(23 downto 20) := "0100";
when "001100" => val(23 downto 20) := "1111"; when "001101" => val(23 downto 20) := "0110";
when "001110" => val(23 downto 20) := "0101"; when "001111" => val(23 downto 20) := "1010";
when "010000" => val(23 downto 20) := "0001"; when "010001" => val(23 downto 20) := "0010";
when "010010" => val(23 downto 20) := "1101"; when "010011" => val(23 downto 20) := "1000";
when "010100" => val(23 downto 20) := "1100"; when "010101" => val(23 downto 20) := "0101";
when "010110" => val(23 downto 20) := "0111"; when "010111" => val(23 downto 20) := "1110";
when "011000" => val(23 downto 20) := "1011"; when "011001" => val(23 downto 20) := "1100";
when "011010" => val(23 downto 20) := "0100"; when "011011" => val(23 downto 20) := "1011";
when "011100" => val(23 downto 20) := "0010"; when "011101" => val(23 downto 20) := "1111";
when "011110" => val(23 downto 20) := "1000"; when "011111" => val(23 downto 20) := "0001";
when "100000" => val(23 downto 20) := "1101"; when "100001" => val(23 downto 20) := "0001";
when "100010" => val(23 downto 20) := "0110"; when "100011" => val(23 downto 20) := "1010";
when "100100" => val(23 downto 20) := "0100"; when "100101" => val(23 downto 20) := "1101";
when "100110" => val(23 downto 20) := "1001"; when "100111" => val(23 downto 20) := "0000";
when "101000" => val(23 downto 20) := "1000"; when "101001" => val(23 downto 20) := "0110";
when "101010" => val(23 downto 20) := "1111"; when "101011" => val(23 downto 20) := "1001";
when "101100" => val(23 downto 20) := "0011"; when "101101" => val(23 downto 20) := "1000";
when "101110" => val(23 downto 20) := "0000"; when "101111" => val(23 downto 20) := "0111";
when "110000" => val(23 downto 20) := "1011"; when "110001" => val(23 downto 20) := "0100";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -