def xor(s1, s2):
    """
    Exclusive-Or of two byte arrays

    Args:
        s1 (bytes): first set of bytes
        s2 (bytes): second set of bytes
    Returns:
        (bytes) s1 ^ s2
    Raises:
        ValueError if s1 and s2 lengths don't match
    """
    if len(s1) != len(s2):
        raise ValueError('Input not equal length: %d %d' % (len(s1), len(s2)))
    return bytes(a ^ b for a, b in zip(s1, s2))