- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
def calcCrc(d):
null = ''.join( ['\x00' for x in xrange(0,16)] )
init = ''.join( ['\x00' for x in xrange(0,16)] )
hsh = ''.join( ['\x00' for x in xrange(0,16)] )
inputd = array('c',''.join( ['\x00' for x in xrange(0,16)] ))
data = copy.copy(d)
if isinstance(d,list):
data = struct.pack('B'*len(data), *data)
l = len(data)
if l % 16 != 0:
data+="".join(["\x00" for x in xrange(0, 16-l % 16)]);
for i in range(0,len(data),16):
for j in xrange(16):
if i + j < len(data):
inputd[j] = chr(ord(hsh[j]) ^ ord(data[i+j]));
else:
inputd[j] = hsh[j];
obj = AES.new(null, AES.MODE_ECB, hsh)
hsh = obj.encrypt(inputd)
return hsh
Кто-нибудь, расскажите ему про '\x00' * 16...
А зачем в Питоне может потребоваться создавать именно неинициализированный массив/строку заданной длины?
Старовато.
Проблемы с кодировкой?
Первый раз слышу просто.
Меня не прикалывает посреди проекта бекпортировать его целиком на 2.7.х, только потому, что какая-то одна важная, но не понадобившаяся в самом начале, либа не нашлась в 3.х.
См. выше.
Тут пишут про несколько незаконченных форков.
Если сервер шлёт gzip даже если его не просили - это хуёвый сервер, имхо.
> Список в студию.
Ну лично для меня - только gevent. Но я с питоном мало работаю, и только с серверной стороны.
И правильно. Сервер не хочет играть по нашим правилам? Отлично, его проблемы, а мы пойдем в другой интернет.
The "identity" content-coding is always acceptable.
Ну тогда всё ещё можно подключить либу, умеющую в gzip. Во втором питоне уже ведь можно подключить либы, так?
Не знаю. Да и вообще я только объяву разместил, там человек (http://www.gamedev.ru/code/forum/?id=194520) вообще питоном не пользовался. Просто суть такова что такие серверы есть, и хуевые они или нет работать то с ними надо.
Да просто админы zKillboard решили трафик поэкономить, вот и запретили identity кодирование.