📄 deltafind2.m
字号:
%% Shift Finding Program
clear all;
close all;
clc;
%text1='IFMCMWVOXLRGBBOEAIFOZBXWGUEBXUTBIRBHBBSTASRVMVXPXSZWKWMWZGBBVCPETBWQUPASKGTAOSWSOIWSWHTEYOMSEOYSFDURXGMVDONUACGTKSVCDDXRAWETHFRWZTASVCPEUCHYEIFCGGUNZVHTREKGTGIEXDBBSHBGMCDYHTMVQSNPCSOTHTXBORRDMWAN';
text1='ZYJKX RFSSP FIDSH PGLUC YDKCI RNRAA MCXDB QBBTQ TFXOF IMLQD NBXLM CXTXQ QNXDB RQFNI TFXON CKIFB THIIO DFHML QKRTK MOKSG XZAVZ IBSZY SIAIU XJKBX MLNAB XKCNS XMFSX IKYQD MPMXT OWTPI DOADB GQCGP VOFRJ CNVSS SVIVA CUTVX UFJET XDSTI LXABJ VTVPK RTKMO KSXGH QZJCW IZMJP LEZOF GECHO WHBSZ YKBTR UPJHM HQCYX GCFYR ETMZO KDKIJ KREEI OVFXF IPDMP MMFGF HLMYZ QNTQM DYTKS RMTBF SZCJC LIFRF ITRUC QPGHO YZAWR ADWJE IMMTC MMZOS ITRPD MDFEE TJUYI DCTCL PKBNR TPDOS SXVUX LDYXT OWTTW AXXUH VFRJT GXUBJ GXZAV ZIBSZ KWNXR FOWEK MEOJB ILMCN OXHFR JHXPR OAXWI ZDHWT VMMYT KSRDM TIVUX HXIPQ CFILX MUJ';
pdguess=6;
ind=find(text1 ~= ' ');
text=text1(ind);
len=length(text);
result=zeros(26,pdguess);
% Average English Letter Distribution
q=[.082 .015 .028 .043 .127 .022 .020 .061 .070 .002 .008 .040 .024 .067 .075 .019 .001 .060 .063 .091 .028 .010 .023 .001 .020 .001];
% Compute distribution of each decimation
for j=1:pdguess
v1=text(j:pdguess:end);
for i=1:length(v1)
result(v1(i)-64,j)=result(v1(i)-64,j)+1;
end
result(:,j)=result(:,j)./length(v1);
end
letter=[0:1:25];
for i=1:pdguess
message=['Find shift for keyword letter ' int2str(i)];
figure(i)
subplot(211)
stem(letter,result(:,i),'.');
title(message)
subplot(212)
stem(letter,q,'.')
sums(i)=sum(result(:,i).^2);
end
deltas=zeros(1,pdguess);
% Here we enter the shifts by hand
% after examining the graphs to find the shifts
%
%
deltas=[12 10 5 15 19 4]
text
newtext=zeros(1,len);
for i=1:len
newtext(i)=text(i)-deltas(mod(i-1,pdguess)+1);
if newtext(i) < 65
val=65-newtext(i);
newtext(i)=91-val;
end
if newtext(i) > 90
val=newtext(i)-90;
newtext(i)=64+val;
end
end
newtext=char(newtext)
newfreqs=zeros(1,26);
for i=1:len
newfreqs(newtext(i)-64)=newfreqs(newtext(i)-64)+1;
end
newfreqs=newfreqs./len;
figure(pdguess+1)
subplot(211)
stem(letter,newfreqs,'.')
title('This is the distribution of the decrypted text.')
subplot(212)
stem(letter,q,'.')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -