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