指数超出范围; matlab

时间:2016-07-03 04:52:58

标签: matlab aes

“喜 Matlab中的这个程序读取了两个输入文件(file.txt和file2.txt),其中有80000个随机数。当我执行以下程序时它有错误(索引超出范围;在Matlab中超出0的值1)。我无法修复此错误。我需要你的帮助。“

clear all
close all
rel=textread('file.txt');
ct=textread('file2.txt');
bh0=zeros(256,20000);  
bh1=zeros(256,20000);
Te2=[99 124 119 123 242 107 111 197];
for i=1:20000

    m(i)=bitxor(ct(16*(i-1)+1),180); 
    if m(i)==Te2(1)|m(i)==Te2(2)|m(i)==Te2(3)|m(i)==Te2(4)|m(i)==Te2(5)|m(i)==Te2(6)|m(i)==Te2(7)|m(i)==Te2(8)
        bh0(m(i)+1,i)=rel(1+4*(i-1));
    else   
        bh1(m(i)+1,i)=rel(1+4*(i-1));
    end
end

for k=1:256
    counter=1;
    for i=1:20000
        if bh0(k,i)~=0
            bh0_final(k,counter)=bh0(k,i);
            counter=counter+1;
        end
    end
end
for k=1:256
    counter=1;
    for i=1:20000
        if bh1(k,i)~=0
            bh1_final(k,counter)=bh1(k,i);
            counter=counter+1;
        end
    end
end

for i=1:20000
    ciphertext0(i)=ct(16*(i-1)+1);
    reload0(i)=rel(1+4*(i-1));
end
sum_c0=zeros(20000,256);
for i=1:20000
    for j=1:256
        if ciphertext0(i)==j
            sum_c0(i,j)=reload0(i);
        end
    end
end

counterr=zeros(1,256);
summ=zeros(1,256);
for i=1:20000
    for k=1:256
        if sum_c0(i,k)~=0
        counterr(k)=counterr(k)+1;
        summ(k)=summ(k)+sum_c0(i,k);
        end
    end
end
for k=1:256
    mean(k)=summ(k)/counterr(k);
end
var=zeros(1,256);
for i=1:20000
    for k=1:256
        if sum_c0(i,k)~=0
            var(k)=((sum_c0(i,k)-mean(k))^2)/counterr(k);
        end
    end

end

1 个答案:

答案 0 :(得分:0)

通过阅读代码,我怀疑在这一行中发生了什么

m(i)=bitxor(ct(16*(i-1)+1),180); 

ct应该有80000的长度所以对于i =允许说20000它检查ct(19999 * 16 +1) - 超出范围