Найти - Пользователи
Полная версия: Помогите разобраться с кодом.
Начало » Центр помощи » Помогите разобраться с кодом.
1 2
antonKachanov
Вот сам код:
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()


Можете объяснить как работает данный код. Я знаю что он шифрует сообщение. А вот подробно описать можете
JOHN_16
antonKachanov
Оформляйте код в теги code
Gaberinho
JOHN_16
antonKachanovОформляйте код в теги code
А как оформлять их?
JOHN_16
когда вводите сообщение, слева от смайликов есть кнопочка, при нажатии которой в редактор сообщений вставляется теги code, внутри которых надо писать программный код, для того что бы он на форуме отображался корректно. Это общее поведение для всех подобных форумов.

из за того что ваше сообщение не оформленно - ваш код нельзя проверить, так как отступы потеряны
Gaberinho
JOHN_16
Gaberinho
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()

выбирать надо пункт python при вводе тегов code
Gaberinho
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()
JOHN_16
antonKachanov
я не вижу ничего особого в данном коде - все это базовые понятия языка Python. Если вы их не знаете, то надо изучать. Типичные операци это арифметические операции над числами, срезы строк, битовые операции над числами, логические операторы
Gaberinho
JOHN_16
А как расшифровать зашифрованное сообщение этим кодом?
JOHN_16
Для начала надо задаться вопросом, а возможно ли это?
Если посмотреть на код, то приходит на ум чт овсе это просто шутка. Ну либо это делал кто то не грамотный.
Gaberinho
elif len(sc) and ‘-’ not in sc:
это условие никогда не выполнится, потмоу что SUPER_CONST никогда не меняется
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)
назначение этой функции вообще не понятна. Любое положительное число больше нуля даст в результате единицу

Ну и т.д. и т.п.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB