Пример #1
0
        public virtual void LastWordEncode()
        {
            BitArray     original = GetWord(8);
            IWordEncoder encoder  = GetNewInstance();
            BitArray     encoded  = encoder.Encode(original);

            Assert.AreEqual(original.Length, encoded.Length);
            CollectionAssert.AreNotEqual(encoded, original);
        }
Пример #2
0
 public CountIt(IDocumentReader documentReader, IDocumentDictionary documentDictionary,
                IView userView, IWordEncoder wordEncoder, IWordFilter[] filters, IWordFormatter[] formatters)
 {
     _documentReader     = documentReader;
     _documentDictionary = documentDictionary;
     _userView           = userView;
     _wordEncoder        = wordEncoder;
     _filters            = filters;
     _formatters         = formatters;
 }
Пример #3
0
        public byte[] EncodeBlock(EncodingPlan plan, byte[] block)
        {
            byte[]          result    = new byte[block.Length];
            List <BitArray> words     = new BitArray(block).ToWords(plan.WordSize);
            int             wordCount = words.Count;

            for (int i = 0; i < wordCount; i++)
            {
                IWordEncoder encoder = plan.Transformations[i];
                BitArray     encoded = encoder.Encode(words[i]);
                words[i] = encoded;
            }
            words.ToBitArray().CopyTo(result, 0);
            return(result);
        }
Пример #4
0
        public byte[] DecodeBlock(EncodingPlan plan, byte[] block)
        {
            byte[]          result = new byte[block.Length];
            List <BitArray> buffer = new List <BitArray> {
            };
            List <BitArray> words  = new BitArray(block).ToWords(plan.WordSize);

            for (int i = words.Count - 1; i >= 0; i--)
            {
                IWordEncoder decoder = plan.Transformations[i];
                BitArray     decoded = decoder.Decode(words[i]);
                buffer.Insert(0, decoded);
            }
            buffer.ToBitArray().CopyTo(result, 0);
            return(result);
        }
Пример #5
0
        private void InstantiateWordTransforms()
        {
            int count = PossibleTransforms.Length;

            transforms = new IWordEncoder[count];
            for (int i = 0; i < count; i++)
            {
                IWordEncoder transform = (IWordEncoder)Activator.CreateInstance(PossibleTransforms[i]);
                transform.WordSize = wordSize;
                if (transform.SeedSize != 0)
                {
                    transform.Seed = KeySchedule.GetNext(transform.SeedSize);
                }

                transforms[i] = transform;
            }
        }
Пример #6
0
        public EncodingPlan GetEncodingPlan(int blockLength)
        {
            EncodingPlan result = new EncodingPlan();

            result.WordSize = wordSize;
            int  transformsCount = Transforms.Length;
            int  bitsInBlock     = blockLength * 8;
            int  remainder       = bitsInBlock % wordSize;
            bool hasRemainder    = remainder != 0;
            int  wordCount       = (int)Math.Ceiling((double)bitsInBlock / wordSize);

            for (int index = 0; index < wordCount; index++)
            {
                int          wordLength = (index == wordCount - 1 && hasRemainder ? remainder : wordSize);
                IWordEncoder encoder    = (IWordEncoder)Activator.CreateInstance(transforms[index % transformsCount].GetType());
                encoder.WordSize = wordLength;
                encoder.Seed     = KeySchedule.GetNext(encoder.SeedSize);
                result.Transformations.Add(encoder);
            }
            return(result);
        }
Пример #7
0
 public Generic()
 {
     instance = GetNewInstance(BlockEncoder.MaxWordSize);
 }