def xor(text: str, shift: str, string: bool = False): text = text.encode() shift = shift.encode() length = len(shift) result = [ j ^ shift[i % length] for i, j in enumerate(text) ] return ''.join(map(chr, result)) if string else result

Powyższa implementacja wykorzystuje cykliczne powtarzanie klucza: ,

gdzie oznacza długość klucza.

Bezpieczeństwo Jeżeli klucz jest krótszy od wiadomości i zostaje wielokrotnie powtórzony, szyfr XOR może zostać złamany metodą analizy częstości.

Szczególnie niebezpieczna jest sytuacja, gdy część tekstu jawnego jest znana. Wówczas: ,

co pozwala bezpośrednio odzyskać fragment klucza.

Pomimo niewielkiego bezpieczeństwa prosty szyfr XOR jest często wykorzystywany: w obfuskacji danych, w prostych programach złośliwych, w szyfrach strumieniowych, jako element bardziej złożonych algorytmów kryptograficznych. Przypisy

Kategoria:Szyfry Kategoria:Szyfry strumieniowe