Вообщем у меня есть программа в котором проходят тест, есть два файла ответов txt формата, в одном правильные в другом неправильные, вопрос формулируется и читается правильный вариант ответа и неправильные варианты ответа. Сами файлы зашифрованы простым алгоритмом так что посмотреть ответы не получиться, но можно удалить файлы и редактировать сам txt файл. Если файлы не существуют программа тестирования сообщить об этом, но защиты от вандализма нету, можно ли как то решит эту проблему? Вшивать ответ внутри программы не вариант.
Стоит ли вообще с такой архитектурой думать о подобном? Правильнее было бы использовать файловую бд, например sqlite. Также, можно добавить шифрование бд, например AES256 с вшитым в программу ключем. Отредактировать файл будет не возможно. Т.е. возможно, но с повреждением файла.
Hemul GM, Я же написал если файлы отсутствуют то программа об этом сообщить(тут проблем нету), другое дело когда он сможет редактировать файл, менять местами строки, от себя что то написать, удалить часть вопросов.
Контрольные суммы положить в 3-й файл.
Вопросы/ответы считали и, по 3-му файлу, проверили.
Не совпали - выводим: "Нарушена целостность файлов теста.".
Бонусная "закусь": Можно и контрольную сумму самого файла КС положить в него же. Тогда вообще будет сложно что-либо поправить даже при открытых ответах (чистым текстом).
Только зашел написать что проблема решена.
Сделал с 3 файлами, в 3 файле храниться некое значение в двух строках, в 1 строке от 1 файла во втором от 2 файла.
При запуске программа ШИФР в 3 файле эти значения пишутся, при чтение из основной программы заного вычисляется хеш и сравнивается с тем что написано в 3 файле.
Porto_b, ну логично: можно заметить легко, что программы в инете на сайте содержат строки md5 sha1. Тут - ничего нового, кроме того, что я посоветовал замкнуть цепь по кругу.
Подключайся к своему легитимному сетевому хранилищу каждый запуск программы (хоть яндекс диск по webdav) и получай хеши этих файлов, при старте проверяй - если локальные файлы имеют те же хэши - то все ок, если нет, то завершай программу с сообщением что идут попытки подмены.
Программа учебная и только для демонстрации. Хотя идея с хешами понравилось.
Вот зашифрованные ответы, сначала читается строка потом расшифровывается и показывается
Ну а порядок заполнения самих ответов такой:
пишется на кириллице варианты ответов в каждой строке
после завершения ввода закрываем блокнот и запускаем программу ШИФР который переведет все это как показано выше.
По идее в эту программу ШИФР можно запихать хеш функцию которая вычисляет контрольную сумму и запишет в последнюю строку и все это шифрует, при чтение из основной программы обратные действия
Porto_b, да можно и отдельный третий файл с хешами - распространять так же его с программой.
Если хэш не совпадает, то и уже не запускается ничего, раз через интернет нельзя.