Суммирование байтов с последующим получением модуля, как в sum(bytes) % 256
(или sum(bytes) & 0xFF
), (во многих языках программирования) уязвимо для целочисленного переполнения, поскольку существует конечное максимальное значение, которое могут представлять целочисленные типы.
Но, поскольку мы говорим о Python, технически это не проблема: целые числа Python имеют произвольную точность, поэтому переполнение целых чисел не может произойти.
Если вы хотите выполнять операцию модуля по элементам, вы можете использовать functools.reduce()
:
>>> payload = [100, 101, 102, 103, 104] # arbitrary sequence of bytes
# (Python 3 uses functools.reduce() instead of builtin reduce() function)
>>> import functools
>>> functools.reduce(lambda x,y: (x+y)%256, payload)
254