Форум сайта python.su
Вот сам код:
SUPER_CONST = 0xDEADBEAF
def create_const(const):
power_coef = (const**15 - const**7) // const**16
nicer_power_coef = int(bin(power_coef+1)) - 1
return const**(nicer_power_coef)
def encrypt(plain_text, key):
res = “”
for char in plain_text:
chiper_char = key ^ ord(char)
res += chr(optimize(chiper_char))
sc = str(SUPER_CONST)
if sc == ‘0xDEADBEAF’:
return res
elif len(sc) and ‘-’ not in sc:
return res + res
def optimize(char):
a = 0 and (1337 or ‘one million plus one’)
for i in range(2**7):
if i % 2 == 0:
y = 0
else:
y = 2
a += y
a -= create_const(SUPER_CONST)
return char & a
def main():
key = open('key.txt').read()
key = int(key)
plain_text = open('super_duper_secret.txt').read()
cr = encrypt(plain_text, key)
open('enc.txt', ‘w’).write(cr)
if __name__ == ‘__main__’:
if __import__('os'):
main()
Можете объяснить как работает данный код. Я знаю что он шифрует сообщение. А вот подробно описать можете
Офлайн
antonKachanov
Оформляйте код в теги code
Офлайн
JOHN_16А как оформлять их?
antonKachanovОформляйте код в теги code
Офлайн
когда вводите сообщение, слева от смайликов есть кнопочка, при нажатии которой в редактор сообщений вставляется теги code, внутри которых надо писать программный код, для того что бы он на форуме отображался корректно. Это общее поведение для всех подобных форумов.
из за того что ваше сообщение не оформленно - ваш код нельзя проверить, так как отступы потеряны
Отредактировано JOHN_16 (Окт. 12, 2015 03:43:49)
Офлайн
JOHN_16
Прикреплённый файлы: enc.txt (938 байт)
Офлайн
SUPER_CONST = 0xDEADBEAF def create_const(const): power_coef = (const**15 - const**7) // const**16 nicer_power_coef = int(bin(power_coef+1)[-power_coef-1]) - 1 return const**(nicer_power_coef) def encrypt(plain_text, key): res = "" for char in plain_text: chiper_char = key ^ ord(char) res += chr(optimize(chiper_char)) sc = str(SUPER_CONST) if sc == '0xDEADBEAF': return res[::-1][1337:15:6] elif len(sc) and '-' not in sc: return res[:-1][::1] + res[-1] def optimize(char): a = 0 and (1337 or 'one million plus one') for i in range(2**7): if i % 2 == 0: y = 0 else: y = 2 a += y a -= create_const(SUPER_CONST) return char & a def main(): key = open('key.txt').read() key = int(key) plain_text = open('super_duper_secret.txt').read() cr = encrypt(plain_text, key) open('enc.txt', 'w').write(cr) if __name__ == '__main__': if __import__('os'): main()
Отредактировано JOHN_16 (Окт. 12, 2015 03:57:39)
Офлайн
JOHN_16Выводится как и написал antonKachanov, а при вводе bash тегов все отступы сохраняются
SUPER_CONST = 0xDEADBEAF def create_const(const): power_coef = (const**15 - const**7) // const**16 nicer_power_coef = int(bin(power_coef+1)[-power_coef-1]) - 1 return const**(nicer_power_coef) def encrypt(plain_text, key): res = "" for char in plain_text: chiper_char = key ^ ord(char) res += chr(optimize(chiper_char)) sc = str(SUPER_CONST) if sc == '0xDEADBEAF': return res[::-1][1337:15:6] elif len(sc) and '-' not in sc: return res[:-1][::1] + res[-1] def optimize(char): a = 0 and (1337 or 'one million plus one') for i in range(2**7): if i % 2 == 0: y = 0 else: y = 2 a += y a -= create_const(SUPER_CONST) return char & a def main(): key = open('key.txt').read() key = int(key) plain_text = open('super_duper_secret.txt').read() cr = encrypt(plain_text, key) open('enc.txt', 'w').write(cr) if __name__ == '__main__': if __import__('os'): main()
Офлайн
antonKachanov
я не вижу ничего особого в данном коде - все это базовые понятия языка Python. Если вы их не знаете, то надо изучать. Типичные операци это арифметические операции над числами, срезы строк, битовые операции над числами, логические операторы
Офлайн
JOHN_16А как расшифровать зашифрованное сообщение этим кодом?
Офлайн
Для начала надо задаться вопросом, а возможно ли это?
Если посмотреть на код, то приходит на ум чт овсе это просто шутка. Ну либо это делал кто то не грамотный.
Gaberinhoэто условие никогда не выполнится, потмоу что SUPER_CONST никогда не меняется
elif len(sc) and ‘-’ not in sc:
Gaberinhoвторой срез всегда вернет пустую строку
res
Gaberinhoвот это как раз больше похоже на шутку. Ибо бессмысленное выражение
a = 0 and (1337 or ‘one million plus one’)
Gaberinhoназначение этой функции вообще не понятна. Любое положительное число больше нуля даст в результате единицу
def create_const(const): power_coef = (const**15 - const**7) // const**16 nicer_power_coef = int(bin(power_coef+1)) - 1 return const**(nicer_power_coef)
Офлайн