public bool PhtTest()
    {
        TwoFish tf   = new TwoFish();
        bool    done = true;

        BitArray[] wynik  = tf.function_H(TwoFish.ConvertHexToBitArray("0"), TwoFish.ConvertHexToBitArray("00010203"), TwoFish.ConvertHexToBitArray("08090A0B"));
        BitArray[] wynik1 = tf.function_H(TwoFish.ConvertHexToBitArray("1"), TwoFish.ConvertHexToBitArray("04050607"), TwoFish.ConvertHexToBitArray("0C0D0E0F"));
        BitArray   MDS1   = tf.MDS(wynik[0], wynik[1], wynik[2], wynik[3]);
        BitArray   MDS2   = tf.MDS(wynik1[0], wynik1[1], wynik1[2], wynik1[3]);
        BitArray   ROL8   = tf.ShiftLft(MDS2, 8);

        tf.PHT(MDS1, ROL8);


        return(done);
    }
    public void H_functionTest()
    {
        TwoFish tf = new TwoFish();
        //var bytes = Encoding.ASCII.GetBytes("aaaa");
        var bitArray = TwoFish.ConvertHexToBitArray("0");

        tf.function_H(bitArray, TwoFish.ConvertHexToBitArray("00010203"), TwoFish.ConvertHexToBitArray("08090A0B"));
        //tf.q1(tf.ConvertTo8bitArray(0));
    }
    public bool MdsTest()
    {
        TwoFish tf   = new TwoFish();
        bool    done = true;

        BitArray[] wynik = tf.function_H(TwoFish.ConvertHexToBitArray("0"), TwoFish.ConvertHexToBitArray("00010203"), TwoFish.ConvertHexToBitArray("08090A0B"));
        if (tf.ConvertToHex(tf.MDS(wynik[0], wynik[1], wynik[2], wynik[3])) != "5430e6e6")
        {
            done = false;
        }

        return(done);
    }
    public bool HfunctionTests()
    {
        TwoFish tf   = new TwoFish();
        bool    done = true;

        BitArray[] wynik = tf.function_H(TwoFish.ConvertHexToBitArray("0"), TwoFish.ConvertHexToBitArray("00010203"), TwoFish.ConvertHexToBitArray("08090A0B"));
        if (tf.ConvertToHex(wynik[0]) != "af" | tf.ConvertToHex(wynik[1]) != "42" | tf.ConvertToHex(wynik[2]) != "22" | tf.ConvertToHex(wynik[3]) != "12")
        {
            done = false;
        }


        return(done);
    }