Ještě malá ukázka, jak elegantně lze algorithmy v Pythonu zapisovat:
def rc2_expandkey(key, length, ekl): global _rc2_expkey _rc2_expkey = map(ord, key) ekl8 = (ekl + 7) >> 3 keymask = 255 >> ((ekl8 << 3) - ekl) for i in range(length, 128): _rc2_expkey.append(_rc2_pitable[(_rc2_expkey[i - 1] + _rc2_expkey[i - length]) & 255]) _rc2_expkey[128 - ekl8] = _rc2_pitable[_rc2_expkey[128 - ekl8] & keymask] for i in range(127 - ekl8, -1, -1): _rc2_expkey[i] = _rc2_pitable[_rc2_expkey[i + 1] ^ _rc2_expkey[i + ekl8]]
Jde o kód, který provádí expansi klíče pro použití šifrovacím algorithmem RC2 – ten je sice obsažen v modulu Python.Crypto, ale neimplementuje jinou efektivní délku klíče než 1024 bitů, takže jsem si ho musel pro účely generování souboru hesel pro Gpasman celý napsat znovu.
Číst dále...