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.
Autorem blogu je
Číst dále...