public static String LFSR(String semSuc, String pol, int sizeOutput) { 
        int output = 0;
        StringBuffer sucAux = new StringBuffer();
        int[] vec = new int[sizeOutput]; //Se crea el vector que hace de buffer  de tamaño pasado desde la interfaz o  igual (2^n-1)*2 por defecto
        //Copia la semilla inicial en el buffer
        for (int i = 0; i < semSuc.length(); i++){ 
            if(semSuc.charAt(i) == '1')
                vec[i] = 1; 
            else
                vec[i] = 0;
        }
        //Se crea el vector que hace de polinomio de conexion
        int[] polCon = new int[pol.length()]; 
        for (int i = 0; i < pol.length(); i++){ 
           if(pol.charAt(i) == '1')
                polCon[i] = 1; 
            else
                polCon[i] = 0;
        }
        
        //Mientras no se rellene el vector a partir de la semilla ya introducida  
        for (int i = semSuc.length(); i < vec.length; i++){  
            //c(D) = D⁴ + D¹ + 1 --> 11001000......
            output = 0;
            for (int j = 0; j < polCon.length; j++){ 
                 output ^= polCon[j]*vec[j];
            }
            //Va insertando en el vector que contendra el (periodo dos veces) 
            //Desplaza los elementos anteriores a la derecha e inserta la salida al principio del buffer
            for (int k = i; k > 0; k--)
                vec[k] = vec[k-1];
            vec[0] = output;
        }
        
        //Pasar el vector a un string para imprimir, pasandolo en orden invertido
        for (int i = vec.length-1; i >= 0 ; i--){ 
            if(vec[i] == 1)
                sucAux.append('1'); 
            else
                sucAux.append('0');
        }
        
        return sucAux.toString();
   }