-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Fast xoring in python #686
Copy link
Copy link
Closed
Labels
Description
instead of
def _websocket_mask_python(mask, data):
return bytes(b ^ mask[i % 4] for i, b in enumerate(data))
please use this:
native_byteorder = sys.byteorder
def _websocket_mask_python(mask, data):
assert len(mask) == 4
datalen = len(data)
if datalen == 0:
return b'' # everything work without this, but may be changed later in python.
data = int.from_bytes(data, native_byteorder)
mask = int.from_bytes(mask * (datalen // 4) + mask[: datalen % 4], native_byteorder)
return (data ^ mask).to_bytes(datalen, native_byteorder)
Reactions are currently unavailable