董凤鸿41040317信计1002密码学1.docx
- 文档编号:10947165
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:24
- 大小:23.23KB
董凤鸿41040317信计1002密码学1.docx
《董凤鸿41040317信计1002密码学1.docx》由会员分享,可在线阅读,更多相关《董凤鸿41040317信计1002密码学1.docx(24页珍藏版)》请在冰豆网上搜索。
董凤鸿41040317信计1002密码学1
密码学实验报告
序号
班级
姓名
学号
日期
时间
地点
1
信计1002
董凤鸿
41040317
8月3日
6:
00-9:
00
实验楼102
指导教师:
实验名称:
密码学数学基础实验
实验任务:
实验一密码学数学基础实验(验证性实验,1学时)
1、求最大公约数
A、实验内容:
实现欧几里德算法;
B、测试数据:
gcd(1736,2848)=8。
2、求元素逆元及求解同余方程
A、实验内容:
实现扩展的欧几里德算法;
B、测试数据:
678-1mod1937=20。
C、实验方程:
。
实验二古典密码学实验(验证性实验,1学时)
1、Vigenere密码和Playfair密码
实验内容:
用下列密码,对信息“thehouseisbeingsoldtonight”进行加密。
忽略单词间的间距。
并对信息解密得到原明文;
A、密钥为“dollars”的Vigenere密码
B、Playfair密码,其密钥如下
L
G
D
B
A
Q
M
H
E
C
U
R
N
I/J
F
X
V
S
O
K
Z
Y
W
T
P
实验三现代对称密码学实验(验证性实验,2学时)
1、DES
A、实验内容:
熟悉DES算法,并实现DES;
B、测试数据:
任意,并验证加/解密结果。
程序清单:
实验一
1、
functionfcd=f2(a,b)
r1=a;
r2=b;
while(r2>0)
q=fix(r1/r2);
r=r1-q*r2;
r1=r2;
r2=r;
end
fcd=r1;
end
2、
functiongb=f1(n,b)
r1=n;
r2=b;
t1=0;
t2=1;
while(r2>0)
q=fix(r1/r2);
r=r1-q*r2;
r1=r2;
r2=r;
t=t1-q*t2;
t1=t2;t2=t;
end
if(r1==1)
gb=t1;
end
functionhj=tongyu(b,d,n)
r1=n;
r2=b;
t1=0;
t2=1;
while(r2>0)
q=fix(r1/r2);
r=r1-q*r2;
r1=r2;
r2=r;
t=t1-q*t2;
t1=t2;t2=t;
end
if(r1==1)
fans=t1;
else
fprintf('²»ÊÇ»¥ËØ');
return
end
hj=mod(fans*d,n);
end
实验二古典密码学实验
1、Vigenere密码和Playfair密码
a.Vigenere密码
求密文:
functiony=shift(x,b);
%Thisfunctionperformstheshiftencryptionfunction
%y=x+bmod26
%Weassumethatxisatextstringandbisanumber
%Theresultiskeptintextrepresentation
xnum=text2int(x);
ynum=mod(xnum+b,26);
y=int2text(ynum);
functiony=vigenere1(txt,key);
%ThisfunctionperformstheVigenerecipherontheplaintextin
%thevariabletxt,usingkey(weassumethekeyisinnumerical
%representation).
if((key<'a')|(key>'z')),
error('Textcharacteroutofrangea-z');
end;
key2=key-'a';
%key2=text2int(key);
xln=length(txt);
kln=length(key2);
forj=1:
xln,
jmod=mod(j,kln);
ifjmod==0,
jmod=kln;
end;%mapanindexof0intoanindexofkln
y(j)=shift(txt(j),key2(jmod));
end;
求明文:
functiony=shift(x,b);
%Thisfunctionperformstheshiftencryptionfunction
%y=x+bmod26
%Weassumethatxisatextstringandbisanumber
%Theresultiskeptintextrepresentation
xnum=text2int(x);
ynum=mod(xnum+b,26);
y=int2text(ynum);
functiony=vigenere2(txt,key);
%ThisfunctionperformstheVigenerecipherontheplaintextin
%thevariabletxt,usingkey(weassumethekeyisinnumerical
%representation).
if((key<'a')|(key>'z')),
error('Textcharacteroutofrangea-z');
end;
key2=-(key-'a');
%key2=text2int(key);
xln=length(txt);
kln=length(key2);
forj=1:
xln,
jmod=mod(j,kln);
ifjmod==0,
jmod=kln;
end;%mapanindexof0intoanindexofkln
y(j)=shift(txt(j),key2(jmod));
end;
B、Playfair密码:
加密:
clear
y=['l''g''d''b''a';
'q''m''h''e''c';
'u''r''n''i''f';
'x''v''s''o''k';
'z''y''w''t''p';];
fprintf('ÃÜÔ¿ÊÇ£º\n');
fprintf('lgdba\n');
fprintf('qmhec\n');
fprintf('urni/jf\n');
fprintf('xvsok\n');
fprintf('zywtp\n');
p=input('ÇëÊäÈëÃ÷ÎÄ');
p1=['df'];m=['er'];ff=0;tt=0;
j=1;
try
while(p(j))
ifp(j+1)
tt=0;
ifp(j)==p(j+1)
p1=[p1p(j)'x'];
j=j+1;
ff=0;
else
p1=[p1p(j)p(j+1)];
j=j+2;
ff=1;
end
else
tt=1;
%p1=[p1p(j)'x'];
end
end
catch
ifff==0&&tt==0;
p1=[p1p(j)'x'];
end
try
ifff==1&&tt==0;
p1=[p1p(j)'x'];
end
catch
end
end
%suan
j=3;
try
while(p1(j))
i=1;%qiuwei
try
while(p1(j)~=y(i))
i=i+1;
end
catch
i=18;
end
qi=fix(i/5);
ri=i-qi*5;
k=1;%qiuwei
try
while(p1(j+1)~=y(k))
k=k+1;
end
catch
k=18;
end
qj=fix(k/5);
rj=k-qj*5;
if(ri==0)
qi=qi-1;
end
if(rj==0)
qj=qj-1;
end
ifqj==qi%ͬÐÐ
ri=ri+1;
ri=mod(ri,5);
rj=rj+1;
rj=mod(rj,5);
else
ifri==rj%ͬÁÐ
qi=qi+1;
qi=mod(qi,5);
qj=qj+1;
qj=mod(qj,5);
else%²»Í¬ÐУ»²»Í¬ÁÐ
rij=ri;
ri=rj;
rj=rij;
end
end
%ÓàÊýΪÁãµÄÌØÏî
if(ri==0)
qi=qi+1;
%qj=qj-1;
end
if(rj==0)
qj=qj+1;
%qi=qi-1;
end
m(j-2)=y(qi*5+ri);
m(j-1)=y(qj*5+rj);
j=j+2;
end
catch
fprintf('¾¼ÓÃܵÄÃÜÎÄ£º\n');
fprintf(m,'\n');
end
解密:
clc
clear
y=['l''g''d''b''a';
'q''m''h''e''c';
'u''r''n''i''f';
'x''v''s''o''k';
'z''y''w''t''p';];
fprintf('ÃÜÔ¿ÊÇ£º\n');
fprintf('lgdba\n');
fprintf('qmhec\n');
fprintf('urni/jf\n');
fprintf('xvsok\n');
fprintf('zywtp\n');
c=input('ÇëÊäÈëÃÜÎÄ£º');
j=1;
try
while(c(j))
i=1;%qiuwei
try
while(c(j)~=y(i))
i=i+1;
end
catch
i=18;
end
qi=fix(i/5);
ri=i-qi*5;
k=1;%qiuwei
try
while(c(j+1)~=y(k))
k=k+1;
end
catch
k=18;
end
qj=fix(k/5);
rj=k-qj*5;
%ÓàÊýΪÁãµÄÌØÏî
if(ri==0)
qi=qi-1;
%qj=qj-1;
end
if(rj==0)
qj=qj-1;
%qi=qi-1;
end
ifqj==qi%ͬÐÐ
ri=ri+4;
ri=mod(ri,5);
rj=rj+4;
rj=mod(rj,5);
else
ifri==rj%ͬÁÐ
qi=qi+4;
qi=mod(qi,5);
qj=qj+4;
qj=mod(qj,5);
else%²»Í¬ÐУ»²»Í¬ÁÐ
rij=ri;
ri=rj;
rj=rij;
end
end
if(ri==0)
qi=qi+1;
end
if(rj==0)
qj=qj+1;
end
c1(j)=y(qi*5+ri);
c1(j+1)=y(qj*5+rj);
j=j+2;
end
catch
fprintf('¾½âÃܵÄÃ÷ÎÄ£º\n');
fprintf(c1,'\n');
end
实验三现代对称密码学实验
DES说明:
当M=1时进行加密运算;当M≠1时为解密结果
D=16进制数表示的字符串格式初始明文;
K=16进制数表示的字符串格式已知密钥
functionC=DES(D,K,M)
%ÊäÈë16½øÖÆÊý±íʾµÄ×Ö·û´®¸ñʽÃ÷ÎÄDºÍÃÜÔ¿K,M=1±íʾ¼ÓÃÜ
%%----------------------------------Êý¾Ý³õʼ»¯-----------------------------------
%½«ÒÔ×Ö·û´®ÐÎʽÊäÈëµÄÃ÷ÎĺÍÃÜԿת»»³É01Êý×Ö´®
DB=[];
fori=1:
16
Di=D(i);
DBi=['0000',dec2bin(hex2dec(Di))];
DBi=DBi(end-3:
end);
DBi=[str2num(DBi
(1)),str2num(DBi
(2)),str2num(DBi(3)),str2num(DBi(4))];
DB=[DB,DBi];
end
D=DB;
KB=[];
fori=1:
16
Ki=K(i);
KBi=['0000',dec2bin(hex2dec(Ki))];
KBi=KBi(end-3:
end);
KBi=[str2num(KBi
(1)),str2num(KBi
(2)),str2num(KBi(3)),str2num(KBi(4))];
KB=[KB,KBi];
end
K=KB;
%64λÊý¾ÝIPÖû»±í
IP=[585042342618102;
605244362820124;
625446383022146;
645648403224168;
57494133251791;
595143352719113;
615345372921135;
635547393123157];
IP0=reshape(IP',1,64);%ת»»³ÉÐÐÏòÁ¿
D_IP=D(IP0);%¶ÔD³õʼÖû»
%EºÐΪÊý¾ÝÀ©Õ¹
E=[32,1,2,3,4,5;
4,5,6,7,8,9;
8,9,10,11,12,13;
12,13,14,15,16,17;
16,17,18,19,20,21;
20,21,22,23,24,25;
24,25,26,27,28,29;
28,29,30,31,32,1];
S1=[14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7;
0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8;
4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0;
15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13];
S2=[15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10;
3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5;
0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15;
13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9];
S3=[10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8;
13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1;
13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7;
1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12];
S4=[7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15;
13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9;
10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4;
3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14];
S5=[2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9;
14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6;
4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14;
11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3];
S6=[12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11;
10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8;
9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6;
4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13];
S7=[4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1;
13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6;
1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2;
6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12];
S8=[13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7;
1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2;
7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8;
2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11];
%PºÐÖû»
P=[16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25];
PC1=[57,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,3,60,52,44,36,63,55,47,39,31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4];
PC2=[14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32];
%%------------------------------²úÉú×ÓÃÜÔ¿---------------------------------
Ki=zeros(16,48);
K_PC1=K(PC1);%¾¹ýÃÜÔ¿³õʼÖû»
C0=K_PC1(1:
28);%·ÖΪÁ½²¿·Ö
D0=K_PC1(29:
56);
fori=1:
16
ifi==1||i==2||i==9||i==16%µÚ1¡¢2¡¢9¡¢16ÂÖÑ»·×óÒÆ1λ
C0=[C0(2:
end),C0
(1)];
D0=[D0(2:
end),D0
(1)];
else%ÆäËüÂÖÑ»·×óÒÆ2λ
C0=[C0(3:
end),C0(1:
2)];
D0=[D0(3:
end),D0(1:
2)];
end
K_LS=[C0,D0];
Ki(i,:
)=K_LS(PC2);
end
%%---------------------------16ÂÖÑ»·¼ÓÃÜ---------------------------------
L=D_IP(1:
32);%ÊäÈëµÄ×ó°ë²¿·ÖÃ÷ÎÄ
R=D_IP(33:
64);%ÊäÈëµÄÓҰ벿·ÖÃ÷ÎÄ
fori=1:
16
E0=reshape(E',1,48);%°ÑEºÐת»»³ÉÐÐÏòÁ¿
R_E=R(E0);%EºÐÀ©Õ¹
%Óë×ÓÃÜÔ¿Ïà¼Ó
ifM==1%Ñ¡Ôñ¼ÓÃÜÓë½âÃÜ£¬M=1±íʾ¼ÓÃÜ
R_Ki=mod(R_E+Ki(i,:
),2);
else
R_Ki=mod(R_E+Ki(17-i,:
),2);
end
%¾S1ºÐ
B=R_Ki(1:
6);
x=B
(1)*2+B(6)+1;
y=B
(2)*8+B(3)*4+B(4)*2+B(5)+1;
C=['0000',dec2bin(S1(x,y))];
C=C(end-3:
end);
C1=[str2num(C
(1)),str2num(C
(2)),str2num(C(3)),str2num(C(4))];
%¾S2ºÐ
B=R_Ki(7:
12);
x=B
(1)*2+B(6)+1;
y=B
(2)*8+B(3)*4+B(4)*2+B(5)+1;
C=['0000',dec2bin(S2(x,y))];
C=C(end-3:
end);
C2=[str2num(C
(1)),str2num(C
(2)),str2num(C(3)),str2num(C(4))];
%¾S3ºÐ
B=R_Ki(13:
18);
x=B
(1)*2+B(6)+1;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 董凤鸿 41040317 1002 密码学