代码适用于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
答案 0 :(得分:0)
参数n
是密钥中的字节数。 n*8
是将其转换为多个位。 bin_x
用于存储密钥的二进制表示。 bin_x_N_Minus_1是我们用来计算下一位的值。
在第一个for循环中,我们遍历键中的位(第一位始终为0)。我们使用该公式计算x_N(bin_x_N_Minus_1是x_N的先前值)。如果x_N为正,则密钥中的相应位为1,否则为零。
tic
和toc
用于计算此for循环所需的时间。
第二个for循环将密钥的位转换为字节,并将它们存储在输出数组key
中。 key
中的第K个条目是通过从bin开始在bin_x中取每个第(N / 8)个条目表示的8位数。
变量r
和t
未使用。