Research Article

Improvements for Finding Impossible Differentials of Block Cipher Structures

Algorithm 3

The algorithm for checking an impossible differential.
input: A differential pair and the system
output: A boolean flag indicates if is an impossible differential
(1) is the augmented matrix of ;
(2) is the dimension variable vector;
(3) is the map of constraints of ;
(4) flagfalse;
(5) indextrue;
(6) Initialize every variable in according to and the constraints in ;
(7) while  index  do
(8) UpdateMatrix (, ) // Update    according to  ;
  Transform    into the reduced-row-echelon form by Gauss-Jordan Elimination  
(9) ReducedRowEchelon ();
(10) if   has no solution then
(11) flagtrue;
(12) break;
(13) else
(14) index false;
(15) count 0;
(16) for     to  1 do
(17) Row of ;
(18) if the sum of the first elements of is 1 then
(19) the index of the element in ;
(20) the last element of ; // the solution of the  th  variable in  
(21)   update the variable vector    with    and return true if there is
no contradiction and return false otherwise.
(22) UpdateVector (, , , );
(23) if   is false then
(24) flag true;
(25) return flag;
(26) else
(27) index true;
(28) end
(29) end
(30) end
(31) end
(32) end
(33) return  flag;