public string Process(byte[] originalBytes, out byte[] markedBytesArray, out byte[] unWaterMarkedBytesArray, out int[] markedIndexes, out int[] unMarkedIndexes) { var processor = new Processor(originalBytes, _mode); markedBytesArray = processor.GetWaterMarkedBytes(_waterMark); unWaterMarkedBytesArray = processor.ExtractWaterMark(markedBytesArray); markedIndexes = processor.InseredWaterMarkIndexes.ToArray(); unMarkedIndexes = processor.ExtractedWaterMarkIndexes.ToArray(); var percentage = CalculateResult(processor.OriginalWaterMarkBits, processor.ExtractedWaterMarkBits); var percentageByIndexes = ResultByIndexes(markedIndexes, unMarkedIndexes); var extractedWaterMark = WaterMark.FromBitArray(processor.ExtractedWaterMarkBits); return(string.Format("Identity: {0}% / {1}% -> {2}", percentage.ToString("F0"), percentageByIndexes.ToString("F0"), extractedWaterMark)); }