private byte[] DecodeBlocks(JBLOCK[][][] coefficients, int length) { using (var ms = new MemoryStream()) { for (var i = 0; i < length / BytesPerBlock + 1; i++) { var d = DecodeBlock(JpegHelper.GetBlock(coefficients, i)); ms.Write(d, 0, d.Length); } return(ms.GetBuffer().Take(length).ToArray()); } }
private byte[] Decrypt(JBLOCK[][][] coefficients, int length) { var res = new byte[length]; for (var i = 0; i < length; i++) { for (var j = 0; j < 8; j++) { var block = JpegHelper.GetBlock(coefficients, i * 8 + j); BitHelper.SetBit(ref res[i], j, DecryptShort(block[0])); } } return(res); }
private void Encrypt(JBLOCK[][][] coefficients, byte[] data) { var l = JpegHelper.GetLength(coefficients); Console.Out.WriteLine($"Capacity = {l / 8}"); Console.Out.WriteLine("Used = {0}", data.Length); for (var i = 0; i < data.Length; i++) { for (var j = 0; j < 8; j++) { var block = JpegHelper.GetBlock(coefficients, i * 8 + j); block[0] = EncryptShort(block[0], BitHelper.GetBit(data[i], j)); } } }
private void EncodeBlocks(JBLOCK[][][] coefficients, byte[] data) { var l = JpegHelper.GetLength(coefficients); Console.Out.WriteLine($"Capacity = {l * BytesPerBlock}"); EnforcePadding(data, BytesPerBlock); Console.Out.WriteLine("Used = {0}", data.Length); for (var i = 0; i < data.Length / BytesPerBlock; i++) { var block = JpegHelper.GetBlock(coefficients, i); EncodeBlock(block, data.Skip(i * BytesPerBlock).Take(BytesPerBlock).ToArray()); if (i % 100 == 0) { Console.WriteLine($"{i} bytes encrypted"); } } }