예제 #1
0
        public BitArray GenerateTag(List <BitArray> gelenBitarray, List <BitArray> keyStreamList, string secretKeyString)
        {
            List <BitArray> birlesecekKeyStream = new List <BitArray>();
            BitArray        Tag       = new BitArray(128, true);
            BitArray        secretKey = new BitArray(128, true);

            for (int i = 0; i < 24; i++)
            {
                tagGenR.OneTagGenRoundImplement(gelenBitarray);
            }

            birlesecekKeyStream.Add(keyStreamList[keyStreamList.Count - 1]);
            birlesecekKeyStream.Add(keyStreamList[keyStreamList.Count - 2]);

            secretKey = concatenate.ConcTogether(divideSecretKey.DivideKey(secretKeyString));

            Tag = (concatenate.ConcTogether(birlesecekKeyStream)).Xor(secretKey);


            return(Tag);
        }
예제 #2
0
파일: RoFunction.cs 프로젝트: suale/Quartet
        public BitArray RoFunctionImplement(BitArray bitArray, int gelenSabit)
        {
            BitArray RoFuncSonuc;

            Divide      divide      = new Divide();
            Rotate      rotate      = new Rotate();
            Concatenate concatenate = new Concatenate();

            List <BitArray> divided         = new List <BitArray>();
            List <BitArray> willConcatenate = new List <BitArray>();



            divided = divide.DivideBitArrayTwo(bitArray);
            willConcatenate.Add(rotate.rotateLeft(divided[0], gelenSabit));
            willConcatenate.Add(rotate.rotateLeft(divided[1], gelenSabit));
            concatenate.ConcTogether(willConcatenate);
            RoFuncSonuc = concatenate.ConcTogether(willConcatenate);
            willConcatenate.Clear();


            return(RoFuncSonuc);
        }