Ejemplo n.º 1
0
        private static void findField()
        {
            int size = 5;

            long[,] addOp  = new long[size, size];
            long[,] multOp = new long[size, size];

            for (int i = 0; i < size; i++)
            {
                for (int j = 0; j < size; j++)
                {
                    for (int res = 0; res < size; res++)
                    {
                        for (int i1 = 0; i1 < size; i1++)
                        {
                            for (int j1 = 0; j1 < size; j1++)
                            {
                                for (int res1 = 0; res1 < size; res1++)
                                {
                                    addOp[i, j]    = res;
                                    multOp[i1, j1] = res1;

                                    FiniteRing finitRing = new FiniteRing(addOp, multOp);
                                    if (finitRing.CheckField() == null)
                                    {
                                        System.Console.WriteLine(addOp);
                                        System.Console.WriteLine(multOp);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        public void NonEqualRingsAdditionTest()
        {
            FiniteRing        otherRing = new FiniteRing(order + 1);
            FiniteRingElement addition  = otherRing.GetElement(15);

            FiniteRingElement result = elem + addition;
        }
Ejemplo n.º 3
0
        //private List<Polynom<long, ZnRing>> BatlerTest(Polynom<long, ZnRing> fx, long p)
        //{
        //    var _res = new List<Polynom<long, ZnRing>>();
        //    var _ring = new ZnRing(p);
        //    var _pring = new Rx<long, ZnRing>(_ring);
        //    var _derivative = fx.Derivative;
        //    var _gcd = Polynom<long, ZnRing>.GetGcd(fx, _derivative);

        //    if (_gcd.Degree > 0)
        //    {
        //        if (_derivative != _pring.Zero)
        //        {
        //            _res.Add(_gcd);
        //            _res.Add(fx.Div(_gcd, null));
        //            return _res;
        //        }
        //        else
        //        {
        //            var c = fx.Degree / p;
        //            var _pol = new Polynom<long, ZnRing>(_ring, (int)c);
        //            var _coeff = new List<long>();
        //            for(var i = 0; i < c; i++)
        //            {

        //            }
        //        }
        //    }

        //    return _res;
        //}

        private static void testCheckField()
        {
            long[,] addOp =
            {
                { 0, 1, 2, 3, 4 },
                { 1, 2, 3, 4, 0 },
                { 2, 3, 4, 0, 1 },
                { 3, 4, 0, 1, 2 },
                { 4, 0, 1, 2, 3 }
            };

            long[,] multOp =
            {
                { 0, 0, 0, 0, 0 },
                { 0, 1, 2, 3, 4 },
                { 0, 2, 4, 1, 3 },
                { 0, 3, 1, 4, 2 },
                { 0, 4, 3, 2, 1 }
            };

            FiniteRing finitRing = new FiniteRing(addOp, multOp);
            String     result    = finitRing.CheckField();

            if (result == null)
            {
                System.Console.WriteLine("Ring is Field!");
            }
            System.Console.WriteLine(result);
        }
Ejemplo n.º 4
0
        public void setUp()
        {
            ring            = new FiniteRing(order);
            initialSequence = new FiniteRingElement[keyLength];

            for (int i = 0; i < keyLength; ++i)
            {
                initialSequence[i] = ring.GetElement((new Random()).Next());
            }
        }
Ejemplo n.º 5
0
        public Key(char[] sequence, Alphabet alphabet)
        {
            ring = new FiniteRing(alphabet.Card);

            this.sequence = new FiniteRingElement[sequence.LongLength];

            for (long i = 0, l = sequence.LongLength; i < l; ++i)
            {
                this.sequence[i] = alphabet.GetLetterOrder(sequence[i]);
            }
        }
Ejemplo n.º 6
0
        protected sealed override void initAlphabet()
        {
            alphabetCard = 32; // ё == е

            alphabet = new Dictionary <char, FiniteRingElement>();
            ring     = new FiniteRing(alphabetCard);

            alphabet.Add('А', ring.GetElement(0));
            alphabet.Add('Б', ring.GetElement(1));
            alphabet.Add('В', ring.GetElement(2));
            alphabet.Add('Г', ring.GetElement(3));
            alphabet.Add('Д', ring.GetElement(4));
            alphabet.Add('Е', ring.GetElement(5));
            alphabet.Add('Ж', ring.GetElement(6));
            alphabet.Add('З', ring.GetElement(7));
            alphabet.Add('И', ring.GetElement(8));
            alphabet.Add('Й', ring.GetElement(9));
            alphabet.Add('К', ring.GetElement(10));
            alphabet.Add('Л', ring.GetElement(11));
            alphabet.Add('М', ring.GetElement(12));
            alphabet.Add('Н', ring.GetElement(13));
            alphabet.Add('О', ring.GetElement(14));
            alphabet.Add('П', ring.GetElement(15));
            alphabet.Add('Р', ring.GetElement(16));
            alphabet.Add('С', ring.GetElement(17));
            alphabet.Add('Т', ring.GetElement(18));
            alphabet.Add('У', ring.GetElement(19));
            alphabet.Add('Ф', ring.GetElement(20));
            alphabet.Add('Х', ring.GetElement(21));
            alphabet.Add('Ц', ring.GetElement(22));
            alphabet.Add('Ч', ring.GetElement(23));
            alphabet.Add('Ш', ring.GetElement(24));
            alphabet.Add('Щ', ring.GetElement(25));
            alphabet.Add('Ъ', ring.GetElement(26));
            alphabet.Add('Ы', ring.GetElement(27));
            alphabet.Add('Ь', ring.GetElement(28));
            alphabet.Add('Э', ring.GetElement(29));
            alphabet.Add('Ю', ring.GetElement(30));
            alphabet.Add('Я', ring.GetElement(31));
        }
 public void setUp()
 {
     ring = new FiniteRing(order);
     elem = ring.GetElement(number);
 }
 public void incorrectOrderCreateTest()
 {
     FiniteRing fail = new FiniteRing(1);
 }
 public void setUp()
 {
     obj = new FiniteRing(order);
 }
Ejemplo n.º 10
0
 public Key(FiniteRing ring, FiniteRingElement[] sequence)
 {
     this.ring     = ring;
     this.sequence = sequence;
 }