20 / 27 / 1
Регистрация: 14.03.2015
Сообщений: 792
|
||||||
1 | ||||||
Простое шифрование и дешифрование - объяснить принцип работы кода21.04.2015, 14:42. Показов 2646. Ответов 14
Метки нет Все метки)
(
Программа шифрует и дешифрует знакомое всем "Hello world".
Люди с добрыми сердцами, подскажите как это происходит
Почему при шифровании совершается действие (Text[i] ^ mask); и при дешифровании совершается оно же? (Text[i] ^ mask); Своим скупым умишком я представлял, что если при шифровании используется сложение, то при дешифровании надо использовать вычитание, умножение --- деление. Надеюсь, у Вас хватит терпения объяснить мне.
0
|
|
21.04.2015, 14:42 | |
Ответы с готовыми решениями:
14
не понимаю принцип работы кода
|
24 / 24 / 11
Регистрация: 09.04.2015
Сообщений: 80
|
|
21.04.2015, 15:36 | 3 |
Все довольно просто - операция XOR при однократном применении дает измененное число, при повторном применении с тем же аргументом - возвращает исходное значение. Это выражение с синусами - и есть "ключ" шифрования, т.е. оно должно быть одинаковым при шифровке и дешифровке. Правда это выражение представляет собой постоянное число, для большей сложности шифрования это выражение должно зависеть от i.
0
|
20 / 27 / 1
Регистрация: 14.03.2015
Сообщений: 792
|
||||||
21.04.2015, 20:44 [ТС] | 4 | |||||
Вывел отдельной командой
Каким образом из первой буквы -H- и "ключа" 13.137 появилась зашифрованная буква -E-?
0
|
940 / 868 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
|
||||||
21.04.2015, 21:08 | 5 | |||||
![]() Решение
Выводить так нужно:
0100 1000 ^ 0000 1101 _________ 0100 0101 - 45(hex) - код E.
0
|
20 / 27 / 1
Регистрация: 14.03.2015
Сообщений: 792
|
|
21.04.2015, 21:18 [ТС] | 6 |
lss, спаси тебя Бог.
Добавлено через 6 минут lss, у Вас доброе сердце, не могу этим не воспользоваться, что это за выражение (sin(3.14) * 400) - (cos(3.14) * 250 / 20)? Почему не просто 13? Чему равен sin(3.14)?
0
|
Модератор
![]() 8845 / 6625 / 902
Регистрация: 14.02.2011
Сообщений: 23,319
|
||||||
21.04.2015, 21:20 | 7 | |||||
запутывание
![]() разберем по частям sin(3.14) синус Пи =0 cos(3.14) косинус Пи =-1 подставляем mask = (0 * 400) - (-1 * 250 / 20)=250/20=12 можно сразу написать
![]()
0
|
940 / 868 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
|
||||||
21.04.2015, 21:34 | 8 | |||||
Соврал немного. Если код в char не имеет графического отображения, то ничего не выведет, поэтому нужно так:
Ошибка в расчётах. ![]()
0
|
20 / 27 / 1
Регистрация: 14.03.2015
Сообщений: 792
|
|
21.04.2015, 21:37 [ТС] | 9 |
ValeryS, Эту строку char mask = (sin(3.14) * 400) - (cos(3.14) * 250 / 20); видит только компилятор и автор программы, запутать можно только компилятор или автор сам себя. Похоже кому-то это удалось
компилятор посчитал и выдал число 13.137.
0
|
Модератор
![]() 8845 / 6625 / 902
Регистрация: 14.02.2011
Сообщений: 23,319
|
|
21.04.2015, 21:52 | 11 |
никакой ошибки
![]() просто человек который писал программу знает число Пи до второго знака в результате sin(3.14)=0,00159265291648695254054143632444, похоже на 0? умножим на 400 получаем 0,6370611665947810162165745297773 cos(3.14)=-0,99999873172753954528511430634505, похоже на -1 ? умножаем на 250 и делим на 20 и прибавляем первое получаем -13,137045313189025332280503359013 ошибки округления чем так славятся числа с плавающей точкой на другой машине может быть и другой результат а также тот кто будет дизасемблировать программу ![]() это еще мелочи, бывает целый день мурыжишь какую нибудь функцию, расчеты посложней чем здесь, и в результате получаешь что она всегда возвращает 1 ![]() в программировании есть специальный термин, который означает запутывание программы,Обфускация https://ru.wikipedia.org/wiki/Обфускация
0
|
20 / 27 / 1
Регистрация: 14.03.2015
Сообщений: 792
|
|
21.04.2015, 22:05 [ТС] | 13 |
Спасибо Вам, люди добрые, надеюсь не я один узнал для себя что-то новое, что-то "разложил по полочкам".
Сожалею, что не могу поделится с Вами своими знаниями, из-за полного отсутствия таковых.
0
|
Модератор
![]() 8845 / 6625 / 902
Регистрация: 14.02.2011
Сообщений: 23,319
|
||||||
21.04.2015, 22:08 | 14 | |||||
объясни тогда сакральный смысл этой записи
думаешь специально сидел и подсчитывал на калькуляторе, чтобы зашифровать 13? а по моему мнению хотел зашифровать 12 а получилось 13, хотя конечно это у автора нужно спрашивать ![]() вот такая запись
0
|
940 / 868 / 355
Регистрация: 10.10.2012
Сообщений: 2,706
|
|
21.04.2015, 23:39 | 15 |
...
Для работы этого кода, как я понимаю, разницы никакой нет - 12 или 13, главное - что бы что-то одно. Чем зашифровал, тем и расшифровал. С этой точки зрения, тут всё правильно сделано.
0
|
21.04.2015, 23:39 | |
Помогаю со студенческими работами здесь
15
Объяснить алгоритм работы указанного кода
Подскажите, как сократить время работы кода? Проверка на простое число Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |