⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 deltafind2.m

📁 loading a text file from a directory to your workspace in matlab
💻 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 + -