2017-01-24 10 views
0

Ich nehme einen Fehler auf GNU Octave.GNU Oktavmaße stimmen nicht überein?

error: sim_encryption: A(I,J,...) = X: dimensions mismatch 
error: called from 
    sim_encryption at line 11 column 13 
Line 11 is " s(1 , :) = mod(s + k , 2) ;" . 

Wenn ich über Fehler zu suchen, es wird gesagt, dass das Problem zu Matrix ist, aber Matrizes sind nicht anders aussehen. Also, wo liegt das Problem ?

ph = '3243f6a8885a308d313198a2e0370734' ; 
kh = '2b7e151628aed2a6abf7158809cf4f3c' ; 

k = zeros(11 , 128) ; 
r = zeros(11 , 8) ; 
s = zeros(11 , 128) ; 

s(1 , :) = hex_to_bin(ph) ; 
k(1 , :) = hex_to_bin(kh) ; 
r(1 , :) = [ 0 0 0 0 0 0 0 1 ] ; 
s(1 , :) = mod(s + k , 2) ; 

for i = 1 : 10 , 
    i ; 
    [ k(i+1 , :) , r(i+1 , :) ] = key_schedule(k(i , :) , r(i , :)) ; 
    s(i+1 , :) = mod(k(i+1 , :) + aes_round(s(i , :) , i) , 2) ; 
    kh = bin_to_hex(k(i+1,:) , 32) ; 
    sh = bin_to_hex(s(i+1,:) , 32) ; 
end 

ch = bin_to_hex(s(11,:) , 32) 
+0

ist das Problem mit ' s (1,:) = hex_to_bin (ph); '? –

+0

Nr. Mit dem 's (1,:) = mod (s + k, 2);' – hopeTo

+0

Ich denke 'mod (x, y)' ist eine 1x1 Matrix und 's (1, :)' ist ein 1xn Matrix, deshalb haben Sie eine Diskrepanz. –

Antwort

1

Da s und k sind beide Größe 11 x 128, das Ergebnis mod(s + k, 2) auch 11 x 128 ist und Sie versuchen, s(1,:) zu überschreiben, die 1 x 128

+0

Ja, Sie haben Recht. Ich ändere den Code 's (1,:) = mod (s (1,:) + k (1,:), 2);' Vielen Dank. – hopeTo

Verwandte Themen