2012-04-23 2 views
0

Код для MATLAB, и я хочу понять, что именно они пытаются сделать. Я новичок в Matlab, поэтому мне нужен совет. Пожалуйста, помогитеРекомендации по созданию этого алгоритма генерации ключа для алгоритма Blowfish

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

Параметр 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 используются во времени, как долго это займет цикл.

Второй цикл цикла преобразует бит ключа в байты и сохраняет их в выходном массиве key. Запись Kth в key это 8 битное число, представленное с каждым (N/8) й записи в bin_x, начиная с К.

Переменные r и t не используются.

Смежные вопросы