All pastes #763792 Raw Edit

Anonymous

public text v1 · immutable
·published 2007-11-06 19:13 UTC
rendered paste body
----------------------------------------------------------------------------------
-- Autor: Martin Gaitan
-- Objetivo: generador de claves para Simple-DES
-- Descripción: recibe una clave de 10bits, 

--1) proceso de permutación P10
-- --------------------
--         P10
-- 3 5 2 7 4 10 1 9 8 6
-- --------------------
--2) Tanto el nibble superior como el inferior sufren un shift izq de 1 bit  
-- 
-- => Para obtener k1, luego se vuelven a unir. ( 
--  1  2  3  4  5 |  6  7  8  9  10 ) 
-- i5 i2 i7 i4 i3 | i1 i9 i8 i6 i10 )
--
-- 3) La union de ambos nibbles concatenados sufren P8
--
-- ------------------
--       P8
-- 6 3 7 4 8 5 10 9
-- ------------------
-- => k1 <= i1 i7 i4 i8 i3 i10 i6
-- 
-- Los nibbles luego de P10 y la primer rotacion de 1bit, sufre una nueva rotacion de 2bits
-- 
-- 1  2  3  4  5  |  6  7  8  9  10 ) 
-- i7 i4 i3 i5 i2 | i8 i6 i10 i1 i9 ) 
--
--- Aplicando P8
--  => k2 <= i8 i3 i6 i5 i10 i2 i9 i1 
----------------------------------------------------------------------------------
library IEEE;

use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity keygen is
   Port (
        i: in STD_LOGIC_VECTOR (0 to 9);
        k1 : out  STD_LOGIC_VECTOR (0 to 7);
        k2 : out  STD_LOGIC_VECTOR (0 to 7));
end keygen;

architecture Behavioral of keygen is
begin
    k1 <= i(1) & i(7) & i(4) & i(8) & i(3) & i(10) & i(6);
    k2 <= i(8) & i(3) & i(6) & i(5) & i(10) & i(2) & i(9) & i(1);
--      k1 <= port map (i(1),i(7),i(4),i(8),i(3),i(10),i(6));
--      k2 <= port map (i(8),i(3),i(6),i(5),i(10),i(2),i(9),i(1));
end Behavioral;