-
Notifications
You must be signed in to change notification settings - Fork 6
/
mix_col.m
34 lines (29 loc) · 906 Bytes
/
mix_col.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function output_data = mix_col(input_data,key)
%NICHOLAS LAU
%000377939
%LAST EDITED: AUG. 20, 2016
%MIXES THE COLUMNS BY GENERATING A POLYNOMIAL KEY BY USING THE DIGITS OF
%THE CRYPTO KEY FROM RIGHT TO LEFT AS THE COLUMN ENTRIES OF THE POLY KEY
%THE POLY KEY IS THEN MULTIPLIED INTO THE COLUMNS OF THE DATA
%KEY MUST BE >= 4 char
data_size = size(input_data);
tmp = key;
% str_key = num2str(key)
% len_str = length(str_key)
poly_key = [];
while (length(poly_key) < data_size(2))
while(tmp >1)
poly_key(1,length(poly_key)+1) = mod(tmp,10);
tmp = tmp / 10;
end
if (length(poly_key) < data_size(2))
tmp = key;
end
end
poly_key = fix(poly_key); %Rounds down decimals to nearest whole digit
poly_key = poly_key(1,1:data_size)';
input_data;
for(ii = 1:data_size(2))
output_data(:,ii) = input_data(:,ii).*poly_key;
end
end