Задний план: Я работаю над приложением (для школьного проекта), которое по сути станет инструментом управления сетевыми активами и исправления. Он будет сканировать сеть на предмет устройств, собирать информацию о них и выполнять другие действия, не относящиеся к вопросу. Одна из его функций - это возможность предоставить пользователю учетные данные для входа в систему для различных сетевых устройств, чтобы приложение могло затем войти на эти устройства, чтобы оно могло собирать дополнительную информацию, а затем разрешить внесение изменений.
Мой вопрос: Как я могу безопасно хранить предоставленные учетные данные. В настоящее время серверная часть будет состоять из базы данных PostgreSQL (которая будет содержать данные сканирования), но я не уверен, безопасно ли хранить их там, или как я должен подойти к проблеме их безопасного хранения, чтобы они могли быть используется позже.
P.S .: Дайте мне знать, если вам нужна дополнительная информация, я новичок в использовании переполнения стека, поэтому я не уверен, достаточно ли я предоставил подробности. Спасибо.





https://www.postgresql.org/docs/current/static/pgcrypto.html документы довольно конкретны с примерами. Создайте расширение один раз для каждой БД:
t=# create extension pgcrypto;
CREATE EXTENSION
Допустим, пароль - Ирландия, а затем используется случайная соль:
t=# select crypt('Ирландия', gen_salt('md5'));
crypt
------------------------------------
$1$gMymr.0W$axxTHvfmsNRDkepNAMNsT1
(1 row)
или же:
t=# select crypt('Ирландия', gen_salt('md5'));
crypt
------------------------------------
$1$wjJDa4Np$M7XqQIrgnfpAf.CLtrpkv1
(1 row)
разные результаты каждый раз, поэтому возьмите ЛЮБОЙ из них, чтобы проверить правильность пароля, например:
t=# select crypt('Ирландия', '$1$gMymr.0W$axxTHvfmsNRDkepNAMNsT1') = '$1$gMymr.0W$axxTHvfmsNRDkepNAMNsT1' as match;
match
-------
t
(1 row)
и неправильно:
t=# select crypt('ИрландияNOT', '$1$gMymr.0W$axxTHvfmsNRDkepNAMNsT1') = '$1$gMymr.0W$axxTHvfmsNRDkepNAMNsT1' as match;
match
-------
f
(1 row)
аргументы для вышеуказанных функций находятся в разделе F.26.2. Функции хеширования паролей