2012-04-23 4 views
0

コードは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

パラメータ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_xのエントリ番目毎(N/8)を取ることによって表される8ビットの数であり、変数K.

から出発rtは未使用です。

関連する問題