📄 (matlab).txt
字号:
加密解密图象隐藏原程序(MATLAB)
注:用bmp图象加密JPEG图象
1.加密隐藏原程序:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function varargout = Tuxiangjiami(varargin)
gui_Singleton = 1;
gui_State = struct(''''gui_Name'''', mfilename, ...
''''gui_Singleton'''', gui_Singleton, ...
''''gui_OpeningFcn'''', @Tuxiangjiami_OpeningFcn, ...
''''gui_OutputFcn'''', @Tuxiangjiami_OutputFcn, ...
''''gui_LayoutFcn'''', [] , ...
''''gui_Callback'''', []);
if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function Tuxiangjiami_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function varargout = Tuxiangjiami_OutputFcn(hObject, eventdata, handles)
arargout{1} = handles.output;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function pushbutton1_Callback(hObject, eventdata, handles)
global counter
global yasuobina
[filename1,pathname]=uigetfile(''''*.jpg'''',''''Open file...'''');
fid1=fopen([pathname filename1],''''rb'''');
yasuoa=fread(fid1,inf,''''uint8''''); %二进制读入
fid2=fopen(''''temp1.jpg'''',''''w+''''); %新建一个空白图
fwrite(fid2,yasuoa,''''uint8''''); %写入读入的二进制代码
imshow(imread(''''temp1.jpg'''')) %读出它的RGB并画图
yasuobina=dec2bin(yasuoa);
[binarow,binclounm]=size(yasuobina);
counter=binarow*binclounm;% 计算压缩的二进制的总位数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function pushbutton2_Callback(hObject, eventdata, handles)
global a
global b
[filename2,pathname]=uigetfile(''''*.jpg'''',''''Open file...'''');
a=imread([pathname,filename2]);%a为载体图象
imwrite(a,''''temp2'''',''''bmp'''');
b=imread(''''temp2'''',''''bmp'''');
imshow(b);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%ffunction pushbutton3_Callback(hObject, eventdata, handles)
global b
global counter
global yasuobina
global counter
ad=double(b);
[adrow,adcolumn]=size(ad);
number=adrow*adcolumn; %计算a元素各数
onearraybin=dec2bin(ad);
[binprow,binpclounm]=size(onearraybin);
range=binprow*binpclounm;
miyao=counter/8;
miyaobin=dec2bin(miyao);
[miyaorow,miyaocolunm]=size(miyaobin);
for i=1:miyaocolunm
onearraybin(range+1-i)=miyaobin(miyaocolunm-i+1);
end
for i=(miyaocolunm+1):30
onearraybin(range+1-i)=''''0'''';
end
for i=31:(counter+30)
onearraybin(range+1-i)=yasuobina(i-30);
end
onearray=bin2dec(onearraybin);
new=ones(adrow,adcolumn/3,3);
for k=1:3
for j=1:(adcolumn/3)
for i=1:adrow
new(i,j,k)=onearray(i+(j-1)*adrow+(k-1)*adrow*adcolumn/3);
end
end
end
c=uint8(new);
imshow(c)
imwrite(c,''''hide.bmp'''',''''bmp'''')
miyaostr=num2str(miyao);
msgbox([''''操作成功! 密钥为: '''' miyaostr '''' 请切记!!! ''''] ,''''Message'''');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2.解密提取原程序:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function varargout = Tuxiangjiemi(varargin)
gui_Singleton = 1;
gui_State = struct(''''gui_Name'''', mfilename, ...
''''gui_Singleton'''', gui_Singleton, ...
''''gui_OpeningFcn'''', @Tuxiangjiemi_OpeningFcn, ...
''''gui_OutputFcn'''', @Tuxiangjiemi_OutputFcn, ...
''''gui_LayoutFcn'''', [] , ...
''''gui_Callback'''', []);
if nargin & isstr(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function Tuxiangjiemi_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
guidata(hObject, handles);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function varargout = Tuxiangjiemi_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function pushbutton1_Callback(hObject, eventdata, handles)
global yitiao
[filename1,pathname]=uigetfile(''''*.bmp'''',''''Open file...'''');
yitiao=imread([pathname,filename1],''''bmp'''');
imshow(yitiao)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function edit1_CreateFcn(hObject, eventdata, handles)
if ispc
set(hObject,''''BackgroundColor'''',''''white'''');
else
set(hObject,''''BackgroundColor'''',get(0,''''defaultUicontrolBackgroundColor''''));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function pushbutton2_Callback(hObject, eventdata, handles)
global yitiao
global miyao
miyao=0;
msuc=0;
prompt={''''请输入密钥:''''};
dlgTitle=''''输入密钥'''';
lineNo=1;
field={''''num''''};
miyao=inputdlg(prompt,dlgTitle,lineNo)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -