Уведомления

Группа в Telegram: @pythonsu

#1 Март 10, 2014 18:52:09

Mouse
Зарегистрирован: 2014-03-09
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Объясните назначение выражения в функции

Объясните что делает строка в функции и зачем


def xor_decrypt(data):
    key, = struct.unpack_from('I', data, len(data) - 8)
    data = bytearray(data)
    for i in reversed(range(4, len(data) - 8, 4)):
        dw, = struct.unpack_from('I', data, i)
        dw ^= key
        key = (key - dw) & 0xFFFFFFFF // что делается тут и зачем 
        data[i:i+4] = struct.pack('I', dw)
    return bytes(data)

Назначение функции я знаю, где взять ключ тоже…

Отредактировано Mouse (Март 10, 2014 19:31:03)

Офлайн

#2 Март 10, 2014 19:34:40

alexsis
Зарегистрирован: 2013-07-26
Сообщения: 148
Репутация: +  9  -
Профиль   Отправить e-mail  

Объясните назначение выражения в функции

Это операция побитового умножения.

Офлайн

#3 Март 11, 2014 00:08:04

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Объясните назначение выражения в функции

Mouse
что делается тут и зачем
каждая F в двоичной системе равна 1111
следовательно, FFFFFFFFh == 11111111111111111111111111111111b
а 11111111111111111111111111111111b == …00000011111111111111111111111111111111b

то есть при & младшие 24 бита сохраняют свои значения, а более старшие биты обнуляются



Офлайн

#4 Март 11, 2014 20:36:11

Mouse
Зарегистрирован: 2014-03-09
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Объясните назначение выражения в функции

py.user.next
И зачем это сделано в данном случае??))
У меня задача принять пакет, расшифровать его статичным ключем blowfish потом расшифровать его XOR-ом ключ которого передается в пакете (4 последних байта) потом отправить пакет зашифрованный новым ключем blowfish (который будет в пакете) + этот пакет зашифровать RSA ( по которому у меня вопрос ниже))

…Ключ состоит из следующих частей: B = 1024, E = 65537, N = передается в пакете
Я так понял что B=размер ключа,E= открытая экспонента…
Что бы зашифровать этот пакет мне надо - взять сумму байт сообщения, возвести в степень E= 65537 и
поделить по модулю N= передается в 1 пакете.

Например :
если b'aaaaaa' = 107070873493857
значит шифровать так : pow(107070873493857,65537)%N
Я правильно понял?))
П.с. только учу программирование

Отредактировано Mouse (Март 11, 2014 20:51:07)

Офлайн

#5 Март 11, 2014 23:06:36

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Объясните назначение выражения в функции

Mouse
И зачем это сделано в данном случае??))
Mouse
потом расшифровать его XOR-ом ключ
Mouse
выучите что такое битовые операции, в частности AND, OR, XOR.

И да меня всегда впечатляли задачи из разряда “вот гайка вот болт соберите синхрофазатрон”. Учится постепенно надо, постигать азы, нарабатывать базу, а потом браться за задачи



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#6 Март 12, 2014 01:46:02

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Объясните назначение выражения в функции

Mouse
И зачем это сделано в данном случае??))
ну, там, походу, получается отрицательное число, а в отрицательных числах слева идут единицы до бесконечности
вот, чтобы их убрать, применяется такое отсечение



Офлайн

#7 Март 12, 2014 17:07:34

Mouse
Зарегистрирован: 2014-03-09
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Объясните назначение выражения в функции

Спасибо всем, а насчет RSA вы мне ответите ?

Отредактировано Mouse (Март 12, 2014 17:21:05)

Офлайн

#8 Март 12, 2014 17:24:32

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Объясните назначение выражения в функции

JOHN_16
вот гайка вот болт соберите синхрофазатрон
Боль и страдания тоже ок.

Офлайн

#9 Март 12, 2014 18:22:31

Mouse
Зарегистрирован: 2014-03-09
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Объясните назначение выражения в функции

JOHN_16
И да меня всегда впечатляли задачи из разряда “вот гайка вот болт соберите синхрофазатрон”. Учится постепенно надо, постигать азы, нарабатывать базу, а потом браться за задачи
Я все равно нечего не пойму пока сам не сделаю, мне так учиться проще

Офлайн

#10 Март 12, 2014 19:00:49

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Объясните назначение выражения в функции

Mouse
Я правильно понял?))
правильно, деление по модулю в pow можно вставлять, оно быстрее

pow(107070873493857,65537, N)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version