Я новичок в криптографии и использую nodejs для обслуживания приложения.
Мое приложение использует файлы конфигурации, которые я хочу зашифровать перед производством, и когда эти файлы нужны серверу nodejs (в работе) он расшифрует их.
Я использую crypto.createCipheriv(algo, key, iv)
для шифрования.Алгоритм: «AES-256-CTR».Ключ создается с паролем:
const key=crypto.createHash('sha256').update(String(password)).digest('base64').substr(0,32)
IV генерируется с:
const iv = crypto.randomBytes(16)
Так что, если я хочу расшифровать файл, мне нужен ключ и iv.Я сохраняю пароль, используемый для генерации ключа (хэшированный), и сопоставляю его с заданным пользователем паролем, но как я храню и получаю iv?
Когда я пишу iv (используя fs.writefile и iv)const) в файл и попробуйте прочитать его, когда я пытаюсь расшифровать, я вижу ошибку:
Ошибка: неверная длина ключа
, даже когда я генерирую и используюiv на сервере он шифрует / дешифрует без каких-либо проблем.
Итак, мой вопрос: как мне сохранить IV, который я использовал, чтобы позже расшифровать файлы?Как использовать его позже при попытке расшифровать?
Есть ли лучший способ / практика для шифрования файлов конфигурации и их расшифровки?Я хочу предоставить своему приложению зашифрованные / хешированные персональные данные, такие как данные конфигурации, имя пользователя / пароль и т. Д.
Мой путь хорош или я не в том направлении?Я буду признателен, если какой-нибудь опытный пользователь шифрования сможет мне помочь ...
Спасибо