Matlab 了解河豚算法的密钥生成算法的建议

Matlab 了解河豚算法的密钥生成算法的建议,matlab,encryption,blowfish,Matlab,Encryption,Blowfish,这段代码是为MATLAB编写的,我想了解他们到底在做什么。我是matlab新手,所以需要一些建议。请帮忙 function [key] = keyGen(n) n = n*8; % n = 2048*2048*16; % n = 24 * 24 * 8; bin_x = zeros(n,1,'uint8'); r = 3.9999998; bin_x_N_Minus_1 = 0.300001; x_N = 0; tic for ind = 2 : n x_N = 1 - 2* bi

这段代码是为MATLAB编写的,我想了解他们到底在做什么。我是matlab新手,所以需要一些建议。请帮忙

function [key] = keyGen(n)
n = n*8;
% n = 2048*2048*16;
% n = 24 * 24 * 8;
bin_x = zeros(n,1,'uint8');
r = 3.9999998;
bin_x_N_Minus_1 =  0.300001;
x_N = 0;
tic

for ind = 2 : n
     x_N = 1 - 2* bin_x_N_Minus_1 * bin_x_N_Minus_1;    
      if (x_N > 0.0)
         bin_x(ind-1) = 1;
      end 
        bin_x_N_Minus_1 =  x_N;

      end
toc
%save bin_sec bin_x;
t = uint8(0);
key = zeros(n/8,1,'uint8');
for ind1 = 1 : n/8

    for ind2 = 1 : 8
    key(ind1) = key(ind1) + bin_x(ind2*ind1)* 2 ^ (ind2-1);
    end

end

参数
n
是键中的字节数
n*8
是将其转换为若干位
bin_x
用于存储密钥的二进制表示形式。bin_x_N_减_1是我们用来计算下一位的值

在第一个for循环中,我们循环键中的位(第一位总是0)。我们使用这个公式计算x_N(bin_x_N_减去x_1是x_N的前一个值)。如果x_N为正,则键中的对应位为1,否则为零

tic
toc
用于计算此for循环所需的时间

第二个for循环将密钥的位转换为字节,并将它们存储在输出数组中,
key
。键中的第K个条目是8位数字,表示从K开始在bin_x中取第(N/8)个条目

变量
r
t
未使用