#node.js #password-encryption
#node.js #пароль-шифрование
Вопрос:
Итак, идея проста, но я не уверен, правильно ли я это делаю. В моем приложении мне нужно использовать имя пользователя / пароль для некоторых подключений к базе данных. Информация хранится в моем файле .bashrc и экспортируется с помощью переменных env. Я не хочу хранить их в виде открытого текста, поэтому я хочу сохранить их в зашифрованном виде. Во время выполнения я считываю переменные env, расшифровываю их и использую.
В настоящее время у меня есть node.js приложение, которое выполняет шифрование, фрагмент кода:
const crypto = require('crypto');
const emailPassword = CLEAR_TEXT_PASSWORD;
const algorithm = 'aes-192-cbc';
const password = 'p3241';
const key = crypto.scryptSync(password, 'salt', 24);
const iv = Buffer.alloc(16, 0);
const cipher = crypto.createCipheriv(algorithm, key, iv);
let encrypted = cipher.update(emailPassword, 'utf8', 'hex');
encrypted = cipher.final('hex');
console.log(encrypted);
Результатом вышесказанного становится моя переменная env.
Теперь в моем пользовательском приложении, чтобы использовать переменную env, у меня есть процедура, обратная расшифровке перед использованием.
Это выглядит как
export const decipher = (input: string) : string => {
const algorithm = 'aes-192-cbc';
const password = 'p3241';
const key = crypto.scryptSync(password, 'salt', 24);
const iv = Buffer.alloc(16, 0);
const decipher = crypto.createDecipheriv(algorithm, key, iv);
let decrypted = decipher.update(input, 'hex', 'utf8');
decrypted = decipher.final('utf8');
console.log(decrypted);
return decrypted;
}
но чего я не знаю, так это того, что все параметры для шифрования / дешифрования указаны открытым текстом в моем коде на сервере.
Есть ли лучший способ сделать это или я чрезмерно параноидален?