Как лучше всего зашифровать значение в файле INI?
Использование ключа шифрования / дешифрования ??





Его тоже нужно расшифровать? Если нет, вы можете просто соль и хешировать его.
Если вы действительно хотите его расшифровать, то, я бы сказал, вам также, возможно, следует указать язык.
Вы можете использовать любой стандартный алгоритм шифрования с ключом и, возможно, префикс значения с некоторым случайным заполнением перед шифрованием.
Но где же тогда вы планируете хранить этот ключ? Или вы собираетесь заставить пользователя ввести пароль и получить из него ключ? В противном случае было бы бессмысленно шифровать значение.
С какой целью? Что вы пытаетесь защитить или скрыть?
Вы можете использовать один из множества алгоритмов двустороннего шифрования ключей, доступных для всех платформ ... Но спросите себя, зачем вы вообще это делаете. Если вы пытаетесь сделать что-то защищенное от взлома, шифрование строк ini, вероятно, не приведет вас так далеко, потому что как только вы расшифруете ini, строка окажется в памяти. А ключ для расшифровки будет в вашей программе. Детская игра, чтобы отрубить.
Если вы просто хотите, чтобы люди не могли легко редактировать параметр, не помещайте его в ini. Выберите двоичный формат, который пользователю будет сложно редактировать.
С какой целью? Безопасность?
Если вы пытаетесь (например) зашифровать пароль в виде обычного текста, вам, вероятно, следует использовать некоторую реализацию PKI. Однако помните, что тогда управление ключами становится вашей проблемой. Простое шифрование значения не является панацеей, потому что ini-файл, скорее всего, находится в файловой системе локального хоста, предположительно в том же месте, где вы должны будете хранить свою пару ключей. Вы просто абстрагировали проблему на один уровень. Они не смогут прочитать ваш зашифрованный пароль напрямую, но если они найдут место, где вы храните свою пару ключей, они смогут расшифровать его самостоятельно.
MD5 хеш
Затем вы сравниваете хеш ("пароль") с хешем ini_file.password
Ха, спустя полные 18 месяцев знаний, я бы сказал следующее: безопасность хеш-функции MD5 серьезно скомпрометирована.
Для личных скриптов, где у меня есть пароль электронной почты, я использую TinyEncryption.
Я вставлю ключ доступа в сам код. Это не дает случайному наблюдателю просто просмотреть и подобрать пароль электронной почты.
Код тоже довольно простой. Вот он на Python.
import random
import base64
def tinycode(key, text, reverse=False):
"(de)crypt stuff"
rand = random.Random(key).randrange
if reverse:
text = base64.b64decode(text)
text = ''.join([chr(ord(elem)^rand(256)) for elem in text])
if not reverse:
text = base64.b64encode(text)
return text
Для большей безопасности я использую PGP, но тогда вам придется запрашивать пароль. Не существует идеальной настройки, это зависит от ваших потребностей.
Вероятно, стоит отметить, что если вы работаете в мире Windows, GetProfileString и WriteProfileString, API для взаимодействия с классическими файлами .ini, фактически устарели уже около десяти лет. Используйте их только в том случае, если вы выполняете 16-битную совместимость.