Компиляция с ключом шифрования PCK
В диалоговом окне экспорта вы можете зашифровать PCK-файл 256-битным ключом AES при выпуске проекта. Это гарантирует, что ваши сцены, скрипты и другие ресурсы не будут храниться в виде обычного текста и не будут легко скопированы каким-нибудь хакером.
Конечно, ключ необходимо сохранить в двоичном файле, но если он скомпилирован, оптимизирован и не содержит символов, то его поиск потребует некоторых усилий.
Чтобы это работало, вам нужно создать шаблоны экспорта из источника, с тем же ключом.
Предупреждение
Это не сработает, если вы используете официальные, предварительно скомпилированные шаблоны экспорта. Для использования шифрования PCK абсолютно необходимо скомпилировать собственные шаблоны экспорта.
Шаг за шагом
Сгенерируйте 256-битный ключ AES в шестнадцатеричном формате. Вы можете использовать вариант aes-256-cbc из этой службы.
Кроме того, вы можете сгенерировать его самостоятельно, используя OpenSSL инструменты командной строки:
openssl rand -hex 32 > godot.gdkey
Вывод в
godot.gdkeyдолжен быть похож на:# NOTE: Do not use the key below! Generate your own key instead. aeb1bc56aaf580cc31784e9c41551e9ed976ecba10d315db591e749f3f64890fВы можете сгенерировать ключ, не перенаправляя вывод в файл, но таким образом вы сведете к минимуму риск раскрытия ключа.
Установите этот ключ как переменную среды в консоли, которую вы будете использовать для компиляции Godot, например так:
export SCRIPT_AES256_ENCRYPTION_KEY="your_generated_key"
set SCRIPT_AES256_ENCRYPTION_KEY=your_generated_key
$env:SCRIPT_AES256_ENCRYPTION_KEY="your_generated_key"Скомпилируйте шаблоны экспорта Godot и установите их в качестве пользовательских шаблонов экспорта в параметрах предустановок экспорта.
Установите ключ шифрования на вкладке Encryption предустановки экспорта:
Добавьте фильтры для файлов/папок, которые нужно зашифровать. По умолчанию фильтры включения пусты и ничего не будет зашифровано.
Экспортируйте проект. Теперь проект должен запуститься с зашифрованными файлами.
Устранение неполадок
Если вы получили ошибку, подобную приведённой ниже, это означает, что ключ не был корректно включён в вашу сборку Godot. Godot шифрует файл PCK во время экспорта, но не может прочитать его во время выполнения.
ERROR: open_and_parse: Condition "String::md5(md5.digest) != String::md5(md5d)" is true. Returning: ERR_FILE_CORRUPT
At: core/io/file_access_encrypted.cpp:103