Четверг, 02 Мая 2024, 02:08

Приветствую Вас Гость

Меню сайта
Наш опрос
Для какой операционной системы пишите игры?
Всего ответов: 17852
Блог » 2013 » ноября » 5 » Шифрование файла в Game Maker для самых маленьких
Шифрование файла в Game Maker для самых маленьких
20:44
Шифрова́ние — обратимое преобразование информации в целях сокрытия от неавторизованных лиц, с предоставлением, в это же время, авторизованным пользователям доступа к ней. Главным образом, шифрование служит задачей соблюдения конфиденциальности передаваемой информации. Важной особенностью любого алгоритма шифрования является использование ключа, который утверждает выбор конкретного преобразования из совокупности возможных для данного алгоритма. (Википедия)

Иными словами шифрование является одним из способов скрытия исходного кода/содержимого вашей программы или другого файла. В этой статье я опишу один из способов шифрования раскрывающий базовый алгоритм программирования основанный на побайтовом изменение информации. Этот туториал является ознакомительным и не претендует на проффесиональный код. Пишу так сказать исходя из собственного опыта.
И так приступим!

Создайте любой файл, например file.txt и напишите в этом файл любой текст.
Я написал известную всем программистам фразу "Hello World!":


Для того чтобы зашифровать этот файл нужна программа. Она имеет название Encrypt("шифровать" пер. с англ.). Создайте проект Encrypt:


Затем создайте объект encr и добавьте в событие Create код:
Код

var file, size, byte, file_encrypt;

//Инициализация
file = file_bin_open("file.txt", 0);
size = file_bin_size(file);
file_encrypt = file_bin_open("file_encrypt.txt", 1);

for(a = 0; a != size; a += 1)
{
  file_bin_seek(file, a);
  byte = file_bin_read_byte(file);
  byte = ~byte;
  file_bin_write_byte(file_encrypt, byte);
}
file_bin_close(file);
file_bin_close(file_encrypt);
show_message("Шифровка успешно завершена");
game_end()

Скриншот:


Ну и соответственно создаете комнату и добавляете обьект.

Теперь поясняю подробно:

    *file_bin_open - открывает для побитового чтения файл (0 - модификатор чтения, 1 - для записи, 2 - для чтения и записи) и возвращает индентификатор
    Кстате в языках высокого уровня типа С++/Java модификатор имеет название флага
    *file_bin_size - возвращает размер файла в байтах
    *file_bin_seek - переходит на позицию a в файле(в байтах)
    *file_bin_read_byte - возвращает байт на позиции а файла file
    *byte = ~byte - здесь мы используем побитовое отрицание(т.е. 0 превращается в 1 и наоборот).
    *file_bin_write_byte - эту функцию используем для записи измененного байта в новый файл
    *file_bin_close - обязательная функция, выполняющая роль закрытия файл
    *game_end - ну это понятно, закрыть программу после завершения всех операций, предварительно показав сообщение об успехе(show_message).


Ну вот и весь код шифратора. Теперь перейдем к дешифратору("decoder" пер. с англ.)
Для того чтобы использовать зашифрованный файл надо его расшифровать. А чтобы его расшифровать надо знать алгорит шифрации, т.к. этот алгоритм нам известен, то ничего сложного в том, чтобы написать декодер нашего файла.
Приступим. Создаем новый проект под названием Decoder.
Затем новый обьект decod, и снова таки используем событие create и пишем код:
Код

var file_encrypt, file_decrypt, size, byte;

file_encrypt = file_bin_open("file_encrypt.txt", 0);
file_decrypt = file_bin_open("file_decrypt.txt", 1);
size = file_bin_size(file_encrypt);

for(a = 0; a != size; a += 1)
{
  file_bin_seek(file_encrypt, a);
  byte = file_bin_read_byte(file_encrypt);
  byte = ~byte;
  file_bin_write_byte(file_decrypt, byte);
}

file_bin_close(file_encrypt);
file_bin_close(file_decrypt);

show_message("Дешифрация прошла успешна))");
game_end();

Скриншот:


Здесь в основном тоже самое что и в шифраторе, только дешифрирует)))

Результат работы программы шифратора:

Как вы уже заметили ранее мы создали file.txt и в нем мы написали Hello World
Вот что получилось после шифрации:

Затем запускаем дешифратор:

И наконец самое заветное то ради чего мы это писали:


По поводу сего туториала скажу еще раз, здесь привиден основной принцип шифрования байтов. Этот пример ни в коей мере не может служить как настоящая защита от злоумышленников. Вы можете использовать любой алгоритм шифрования вместо примера описанного выше. К примеру не только использовать отрицание байта, а к примеру какю-нибудь сложную формулу, использующая операции побитового сдвига, и, или и др.

Ну и на этом все, что хотел написал, и я очень надеюсь, что кто то извлек из этого пользу)
А если нет, то посоветуйте в комментариях чтобы написать))
Категория: Программирование | Просмотров: 4837 | Рейтинг: 5.0/2 |
Теги: Game Maker, Hello World, текст, защита, GM, шифрование, шифрование файлов, безопасность, программирование, gamemaker
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Шифрование файла в Game Maker для самых маленьких», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 5
+1-
5 GameMix   (09 Ноября 2013 17:59) [Материал]
GameMixВот это полезно smile

+1-
4 beril   (09 Ноября 2013 14:51) [Материал]
berilИнтересно

+1-
2 Изя   (07 Ноября 2013 16:22) [Материал]
Почему не в статьях?

+0-
3 krap   (07 Ноября 2013 16:58) [Материал]
первый раз пишу, в следующий раз учту smile

+1-
1 krap   (07 Ноября 2013 09:36) [Материал]
Комментируем smile

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Автор материала
Ник:
krap
Ещё:
Все его записи
Календарь заметок
«  ноября 2013  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930
Поиск по сайту
Записи по месяцам
Друзья сайта
Игровой форум GFAQ.ru Перевод консольных игр
Все права сохранены. GcUp.ru © 2008-2024 Рейтинг