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; |
|