1 LIBRARY IEEE; 2 USE IEEE.STD_LOGIC_1164.ALL; 3 USE IEEE.std_logic_unsigned.ALL; 4 5 ENTITY KEKE IS --定义实体wsj1 6 GENERIC(n : positive := 16); 7 8 PORT(CLK:IN STD_LOGIC;--时钟信号 9 CTL:IN STD_LOGIC;--控制信号 10 V1:BUFFER STD_LOGIC;--假设伪随机序列1作为待价密数据 11 V2:BUFFER STD_LOGIC;--伪随机序列二作为密钥数据流v2 12 V3:BUFFER STD_LOGIC;--V3为异或后生成的加密数据串行输出 13 V4:BUFFER STD_LOGIC;--解密数据流应该和密钥数据流v2相同 14 V5:BUFFER STD_LOGIC--v3和v4异或解密得到结果v5 15 ); 16 END KEKE; 17 18 ARCHITECTURE BEHAV OF KEKE IS 19 20 SIGNAL C0,C1,C2,C3,C4,C5,C6,C7:STD_LOGIC;--伪随机序列1作为待价密数据 21 SIGNAL A0,A1,A2,A3,A4,A5,A6,A7:STD_LOGIC;--伪随机序列二作为密钥数据流v2 和解密数据流v4 22 23 BEGIN 24 ----伪随机序列1作为待价密数据 25 PROCESS(CLK, CTL) 26 BEGIN 27 IF CLK'EVENT AND CLK='1' THEN 28 IF ( CTL='1') THEN 29 C7<='0';C6<='0';C5<='0';C4<='0';C3<='0';C2<='0';C1<='0';C0<='1';V1<=C7; 30 ELSE 31 C1<=C0;C2<=C1; C3<=C2;C4<=C3;C5<=C4;C6<=C5;C7<=C6; 32 C0<=C7 XOR C4 XOR C3 XOR C2 ; 33 V1<=C7; 34 END IF; 35 END IF; 36 END PROCESS; 37 ----伪随机序列二作为密钥数据流v2 和解密数据流v4 38 PROCESS(CLK, CTL) --设置敏感量 39 BEGIN 40 IF CLK'EVENT AND CLK='1' THEN 41 IF ( CTL='1') THEN 42 A7<='0';A6<='0';A5<='0';A4<='0';A3<='0';A2<='0';A1<='0';A0<='1';V2<=A7;V4<=A7; 43 ELSE 44 A1<=A0;A2<=A1; A3<=A2;A4<=A3;A5<=A4;A6<=A5;A7<=A6; 45 A0<=A7 XOR A1; 46 V2<=A7; 47 V4<=A7; 48 END IF; 49 END IF; 50 END PROCESS; 51 ----v3密文数据为v1v2异或得到 52 V3<=V1 xor V2; 53 ----v5密文数据为v3v4异或得到明文数据应该和v1一样 54 V5<=V3 xor V4; 55 END BEHAV;
Smartkeke