private void decodeLSB(FileType fileType) { byte[] currentFileBytesToDecode = this.fileBytes; if (fileType == FileType.BMP) { currentFileBytesToDecode = FileFormatHelpers.decodeDataFromFileBytesBmp(ref currentFileBytesToDecode); } else { currentFileBytesToDecode = FileFormatHelpers.decodeDataFromFileBytesJpg(ref currentFileBytesToDecode); } while (currentFileBytesToDecode != null) { FileType decodedFileBytesFileType = FileFormatHelpers.checkFileType(ref currentFileBytesToDecode); switch (decodedFileBytesFileType) { case (FileType.BMP): { DecodedFileWindow decodedFileWindow = new DecodedFileWindow(); decodedFileWindow.setFile(ref currentFileBytesToDecode); decodedFileWindow.Show(); currentFileBytesToDecode = FileFormatHelpers.decodeDataFromFileBytesBmp(ref currentFileBytesToDecode); } break; case (FileType.JPEG): { DecodedFileWindow decodedFileWindow = new DecodedFileWindow(); decodedFileWindow.setFile(ref currentFileBytesToDecode); decodedFileWindow.Show(); currentFileBytesToDecode = FileFormatHelpers.decodeDataFromFileBytesJpg(ref currentFileBytesToDecode); } break; case (FileType.NONE): { StringBuilder message = new StringBuilder(); byte[] currentCharBytesUnicode = System.Text.Encoding.Convert(Encoding.ASCII, Encoding.Unicode, currentFileBytesToDecode); char[] unicodeChars = new char[Encoding.Unicode.GetCharCount(currentCharBytesUnicode, 0, currentCharBytesUnicode.Length)]; Encoding.Unicode.GetChars(currentCharBytesUnicode, 0, currentCharBytesUnicode.Length, unicodeChars, 0); string unicodeString = new string(unicodeChars); currentFileBytesToDecode = null; DecodedMessageWindow decodedMessageWindow = new DecodedMessageWindow(); decodedMessageWindow.setMessage(unicodeString); decodedMessageWindow.Show(); } break; } } }
private bool encodeLSBBMP() { bool result = false; BmpFileHeaders bmpFileHeaders = FileFormatHelpers.readBmpFileHeaders(this.fileBytes); LSBEncodeDialog lSBEncodeDialog = new LSBEncodeDialog(); if (lSBEncodeDialog.ShowDialog() == true) { EncodeQueryResult encodeQueryResult = lSBEncodeDialog.getResult(); byte[] sourceByteArray = FileFormatHelpers.convertLayerToByteArray(encodeQueryResult.layers[encodeQueryResult.layers.Count - 1]); for (int index = (encodeQueryResult.layers.Count - 1); index >= 0; index--) { if (index == 0) { FileFormatHelpers.encodeDataIntoFileBytesBmp( ref bmpFileHeaders, ref sourceByteArray, ref this.fileBytes ); } else { LayerInformation layerTargetInformation = encodeQueryResult.layers[index - 1]; sourceByteArray = FileFormatHelpers.encodeDataIntoLayersFileBytes( ref sourceByteArray, layerTargetInformation ); } encodeQueryResult.layers.RemoveAt(index); } result = true; } return(result); }