Кодировать строку и сохранить значение в файл в Inno Setup - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть код Pascal Script в Inno Setup, чтобы получить DBURI из пользовательских данных и сохранить его в файл, чтобы приложение могло прочитать эту строку и подключиться к базе данных.

DBURI :=
  'Databaseserver//'+DatabaseUserName+':'+DatabasePassword+'@'+
  Host+':'+Port+'/'+DatabaseName+'"';

SaveStringToFile(dbconf, DBURI, True);

Это работаетв совершенстве.Но проблема в строке не зашифрована, и любой, кто просматривает файл, может получить пароль базы данных.Я хочу использовать метод шифрования с предопределенным ключом в коде Pascal Script и записать выходное значение (зашифрованную строку) в файл.Итак, я могу включить метод шифрования и ключ в код своего приложения, чтобы расшифровать значение и начать использовать строку DBURI.

Итак, мой вопрос, как использовать метод шифрования (любой) с предопределенным ключом в коде Pascal Script?Я нашел много статей в документации на Паскале, но я не знал, как их использовать?

1 Ответ

0 голосов
/ 12 декабря 2018

Ваш вопрос довольно широкий, поэтому я тоже отвечу на него широко.

Некоторые факты:

  • В общем, не существует действительно безопасного способа шифрования данных (пароль БД), чтобы их можно было использовать автоматически.Даже если вы используете ключ шифрования.Получить ключ из двоичных файлов не так сложно.В частности, код Inno Setup легко разбирается.См. Разборка строк из Inno Setup [Код] .Хотя вы, похоже, готовы принять даже простую кодировку Base64 без ключа, ваши потребности в безопасности, вероятно, не так высоки.

  • В Inno Setup (или ее Pascal) не поддерживается шифрованиеКод скрипта).Вы должны использовать внешние функции или приложения.Хотя некоторая простая кодировка (не шифрование), такая как Base64, может быть реализована в коде Pascal Script.

Что вы можете сделать:

  • ЕслиВы будете расшифровывать данные, используя ту же локальную учетную запись, что и шифрование (тот же пользователь устанавливает и использует программное обеспечение), используйте Windows CryptoAPI.Это действительно безопасно, так как использует ключ, связанный с локальной учетной записью и защищенный паролем учетной записи.Но это ограничивает использование, как уже упоминалось.

    См. Простое шифрование AES с использованием WinAPI .
    Я не пытался реализовать это в Pascal Script, но я считаю, что это должно быть возможно.

    Я полагаю, что вы можете использовать CryptoAPI даже с известным ключом (общим для программы установки и приложения), но я не знаю подробностей.

  • Другой способшифровать данные с помощью известного ключа, вызывая для этого внешнее приложение.Вы можете использовать классы PowerShell и .NET для реализации шифрования.Или вы можете добавить скрытую функцию в свое собственное приложение, которую вы будете вызывать из Inno Setup для шифрования и хранения данных.

  • Если вы довольны кодировкой Base64 (или, возможно, шестнадцатеричным)см .:
    Кодирование строки в Base64 в Inno Setup (Unicode-версия Inno Setup)

...