Skip to content

Index

flavor.utils

TODO: Add module docstring.

Functions

xor_decode

xor_decode(data: bytes, key: bytes = XOR_KEY) -> bytes

XOR decode data with repeating key.

Since XOR is symmetric, this is the same as encoding.

Parameters:

Name Type Description Default
data bytes

Bytes to decode

required
key bytes

XOR key bytes (defaults to π digits)

XOR_KEY

Returns:

Type Description
bytes

XOR decoded bytes

Source code in flavor/utils/xor.py
def xor_decode(data: bytes, key: bytes = XOR_KEY) -> bytes:
    """
    XOR decode data with repeating key.

    Since XOR is symmetric, this is the same as encoding.

    Args:
        data: Bytes to decode
        key: XOR key bytes (defaults to π digits)

    Returns:
        XOR decoded bytes
    """
    return xor_encode(data, key)  # XOR is its own inverse

xor_encode

xor_encode(data: bytes, key: bytes = XOR_KEY) -> bytes

XOR encode data with repeating key.

Parameters:

Name Type Description Default
data bytes

Bytes to encode

required
key bytes

XOR key bytes (defaults to π digits)

XOR_KEY

Returns:

Type Description
bytes

XOR encoded bytes

Source code in flavor/utils/xor.py
def xor_encode(data: bytes, key: bytes = XOR_KEY) -> bytes:
    """
    XOR encode data with repeating key.

    Args:
        data: Bytes to encode
        key: XOR key bytes (defaults to π digits)

    Returns:
        XOR encoded bytes
    """
    return bytes(data[i] ^ key[i % len(key)] for i in range(len(data)))