سلام عليكم ورحمة الله عندي سؤال عن التشفير وفك التشفير
Write a program area (extract) contains zhimogo text file into the body (the body) graphics file. You can use the method of least significant bits (Lasst Significant Bit, LSB). For example, full-color files in RGB format code for each pixel is three bytes to represent respectively the red, green and blue components. Change each of the three least significant bits (bits concealed recording messages) will change the color of a given point of less than 1%, which is entirely imperceptible. Thus the file size of 800 kilobytes can hide a message of up to 100 kilobytes. Methods to hide the
very presence of confidential information steganography called
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
ButtonGraphOK: TButton;
BMPFileNameEdit: TEdit;
BMPFileOpenDlg: TOpenDialog;
lbbmpfilename: TLabel;
TextFileNameEdit: TEdit;
TextFileOpenDlg: TOpenDialog;
lbtextfilename: TLabel;
ButtonTextOK: TButton;
ButtonEncrypt: TButton;
KeyEdit: TEdit;
lbKeyStep: TLabel;
PageControl1: TPageControl;
TSEncryption: TTabSheet;
TSDecryption: TTabSheet;
BMPCryptFileNameEdit: TEdit;
lbBMPCryptFileName: TLabel;
KeyFileNameEdit: TEdit;
lbKeyFileName: TLabel;
ButtonBMPCryptFileOK: TButton;
ButtonKeyFileOK: TButton;
ButtonDecryption: TButton;
BMPCryptFileOpenDlg: TOpenDialog;
KeyFileOpenDlg: TOpenDialog;
procedure ButtonGraphOKClick(Sender: TObject);
procedure ButtonTextOKClick(Sender: TObject);
procedure ButtonEncryptClick(Sender: TObject);
procedure ButtonBMPCryptFileOKClick(Sender: TObject);
procedure ButtonKeyFileOKClick(Sender: TObject);
procedure ButtonDecryptionClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Picture;
{$R *.dfm}
var Picture:TPicture;
BinFileText:TTextBinFile;
CharFileText:TTextCharFile;
Key:TKey;
procedure TForm1.ButtonGraphOKClick(Sender: TObject);
var FileName:string;
begin
BMPFileOpenDlg.FileName := BMPFileNameEdit.Text;
if BMPFileOpenDlg.Execute
then BMPFileNameEdit.Text := BMPFileOpenDlg.FileName;
FileName:=BMPFileNameEdit.Text;
Picture:=TPicture.Create(FileName);
end;
procedure TForm1.ButtonTextOKClick(Sender: TObject);
var FileName:String;
begin
TextFileOpenDlg.FileName:=TextFileNameEdit.Text;
if TextFileOpenDlg.Execute
then TextFileNameEdit.Text := TextFileOpenDlg.FileName;
FileName:=TextFileNameEdit.Text;
BinFileText:=TTextBinFile.Create(FileName);
end;
procedure TForm1.ButtonEncryptClick(Sender: TObject);
var bytetxt:arbyte;
PicFileName:string;
Step:integer;
begin
Step:=StrToInt(KeyEdit.Text);
Key:=TKey.Create(Step,BinFileText.Size);
bytetxt:=BinFileText.ByteRead;
with Key do
Picture.WriteBits(bytetxt,key);
PicFileName:=Picture.FileName;
Picture.SavePicture(PicFileName);
Key.SaveToFile(PicFileName);
end;
procedure TForm1.ButtonBMPCryptFileOKClick(Sender: TObject);
var FileName:String;
begin
BMPCryptFileOpenDlg.FileName := BMPCryptFileNameEdit.Text;
if BMPCryptFileOpenDlg.Execute
then BMPCryptFileNameEdit.Text := BMPCryptFileOpenDlg.FileName;
FileName:=BMPCryptFileNameEdit.Text;
Picture:=TPicture.Create(FileName);
end;
procedure TForm1.ButtonKeyFileOKClick(Sender: TObject);
var FileName:String;
KeyRecord:TKeyRecord;
begin
KeyFileOpenDlg.FileName:=KeyFileNameEdit.Text;
if KeyFileOpenDlg.Execute
then KeyFileNameEdit.Text := KeyFileOpenDlg.FileName;
FileName:=KeyFileNameEdit.Text;
KeyRecord:=Key.ReadFromFile(FileName);
Key:=Tkey.Create(KeyRecord.Step,KeyRecord.TextFileSize);
end;
procedure TForm1.ButtonDecryptionClick(Sender: TObject);
var bytetxt:arbyte;
FileName:String;
begin
with Key do
begin
SetLength(bytetxt,key.TextFileSize);
bytetxt:=Picture.ReadBits(key);
FileName:=Picture.FileName;
Delete(FileName,Length(FileName)-2,3);
FileName:=FileName+'txt';
CharFileText:=TTextCharFile.Create(FileName);
CharFileText.ByteWrite(bytetxt,key);
end;
end;
end.