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); }
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; }
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); }
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); }
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; } }
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); }
public Generic() { instance = GetNewInstance(BlockEncoder.MaxWordSize); }