def f(r, k): e = map_(r, table=expansion_table) mid = xor_s(e, k) sbox_res = [] for i in range(0, 48, 6): cur_sbox = sbox[i / 6] coord = (b2i_d[mid[i] + mid[i + 5]], b2i_d[mid[i + 1] + mid[i + 2] + mid[i + 3] + mid[i + 4]]) sbox_res.append(i2b_d[cur_sbox[coord[0]][coord[1]]]) sbox_res = "".join(sbox_res) return map_(sbox_res, table=sbox_perm_table)
def perm2_s(k): """ >>> perm2_s('00000000000000011111111111101100110011110001000000011110') '010100000010110010101100010101110010101011000010' """ return ''.join(map_(k, table=perm2_table))
def init_perm_b(plaintext): plaintext = "".join(plaintext) plaintext = map_(plaintext, table=init_perm_table) return plaintext[:32], plaintext[32:]
def inverse_init_perm_b(c): return map_(c, table=inv_init_perm_table)