2012-04-23 40 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,否則爲零。

tictoc用於計算此循環需要多長時間。

第二個for循環將密鑰的位轉換爲字節,並將它們存儲在輸出數組key中。在key第K個條目是通過取每一個(N/8)個bin_x條目所代表的8比特數,從K.

開始的變量rt未使用。