-rwxr-xr-x 2282 cryptattacktester-20230614/aes128-table.py raw
#!/usr/bin/env python3 import sys from math import log def intervalparse(x): assert x.startswith('[') assert x.endswith(']') x = x[1:-1] x = x.split(',') assert len(x) == 2 x0,x1 = map(float,x) assert x0 > 0 assert x1 >= x0 assert x1 < x0*1.0001 # indistinguishable on graph return x0 iter = {} cost = {} lgcost = {} prob = {} prob2 = {} trials = {} succ = {} QX = {} QU = {} QF = {} for line in sys.stdin: line = line.split() assert line[1] == 'problem=aes128' assert line[3] == 'attack=aes128_enum' data = {} for x in line[2].split(',')+line[4].split(','): y = x.split('=') assert len(y) == 2 assert y[0] not in data data[y[0]] = int(y[1]) K,C,I = data['K'],data['C'],data['I'] assert I+1 == 2**K iter[K,C] = I QX[K,C],QU[K,C],QF[K,C] = data['QX'],data['QU'],data['QF'] if line[0] == 'searchparams': assert (K,C) not in cost assert (K,C) not in prob assert line[7] == 'cost' cost[K,C] = int(line[8]) assert line[9] == 'lgcost' lgcost[K,C] = intervalparse(line[10]) assert line[11] == 'prob' prob[K,C] = intervalparse(line[12]) if line[0] == 'circuitcost': assert line[5] == 'prediction' assert int(line[6]) == cost[K,C] assert line[7] == 'ops' assert int(line[8]) == cost[K,C] assert 'ALERT' not in line if line[0] == 'circuitprob': assert (K,C) not in prob2 assert (K,C) not in succ assert line[5] == 'cost' assert int(line[6]) == cost[K,C] assert line[7] == 'prob' assert intervalparse(line[8]) == prob[K,C] assert line[9] == 'prob2' prob2[K,C] = intervalparse(line[10]) assert line[11] == 'trials' trials[K,C] = int(line[12]) assert line[15] == 'succ' succ[K,C] = intervalparse(line[16]) print(r'\begin{tabular}{rr|rrrrrrr}') print(r'$K$&$C$&\verb|QX|&\verb|QU|&\verb|QF|&lgcost&prob&prob2&succ\\') print(r'\noalign{\hrule}') for K,C in iter: if K > 16 and K%16: continue costperiter = '%.6f'%(log(cost[K,C])/log(2.0)) if (K,C) in trials: assert trials[K,C] == 100000 p = '%.5f'%prob[K,C] p2 = '%.5f'%prob2[K,C] if (K,C) in prob2 else '' s = '%.5f'%succ[K,C] if (K,C) in succ else '' print(fr'{K}&{C}&{QX[K,C]}&{QU[K,C]}&{QF[K,C]}&{costperiter}&{p}&{p2}&{s}\\') print(r'\end{tabular}')