Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2023, 16:23   #1
iXNomad
Пользователь
 
Регистрация: 06.01.2021
Сообщений: 45
Сообщение Как лучше хранить пароли и реализовать их шифрование (НЕ хэш-функция)

Я новичок на С, пишу тут программку (ну так, чтобы сам бы пользовался ей, ну мб кому-то ещё потом пригодится), которая генерирует пароли. Делаю её по типу компактной утилиты для терминала.
https://github.com/nomadrussian/PSW
Сейчас вот генерацию вроде уже сделал, теперь на очереди сохранение на диске и чтение.
В общем, храниться они будут в виде пары метка-пароль, и тут у меня возникают некоторые, скажем так, трудности.

1. Как лучше их хранить? Я имею в виду каждая пара в своём файле/всё сразу в одном файле, и если последнее, то как структуризовать файл? Пока думаю просто записывать в файл по меткам, в алфавитном порядке.
2. Думаю ещё нужно добавить алгоритм шифрования, где в роли ключа будет использоваться специальный пароль пользователя. В общем, нужен алгоритм, который получает строку и ключ, а возвращает зашифрованную строку. И в обратном порядке - зашифрованная строка и ключ, а получает исходную строку.
3. Нужно ли усложнять алгоритм генерации, я имею в виду в плане самой случайности, потому что опять же, видел как люди пишут, что генерация через srand/rand и, как я понимаю, time(NULL), где зерно меняется только раз в секунду, тоже сомнительная (мне тут пришлось придумывать различные выкрутасы, чтобы при вызове программы чаще раза в секунду она выдавала различные результаты, и то это не гарантировано).

Шифр Цезаря и его вариации - это нет сразу по понятным причинам. Думаю про использование xor - но опять же, пишут, что сомнительно и что он уязвим для атак. Я думал, мб хэшировать пароль пользователя каким-нибудь md5 и использовать уже этот хэш как ключ для xor, ну там подогнав его под длину строки по определённому алгоритму, использовать имя самой метки как соль ну и т.д..
Крч не знаю)) Хочется самому написать. Я это делаю для обучения и чисто из принципа добить проект до конца.
Хотелось бы что-то более-менее простое, без необходимости подключать специальные библиотеки для шифрования, как для сложных алгоритмов вроде AES.
С другой стороны, кто будет атаковать пользвателя на его собственном компьютере, тем более в Unix/Linux...

У меня просто куча разных паролей на разных сайтах, и все ну никак нельзя запомнить. Слишком жёстко. Вот и решил написать заодно для практики, тем более программка вроде очень лёгкая получается.

Последний раз редактировалось iXNomad; 15.08.2023 в 16:25.
iXNomad вне форума Ответить с цитированием
Старый 15.08.2023, 16:53   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Цитата:
Сообщение от iXNomad Посмотреть сообщение
думал, мб хэшировать пароль пользователя каким-нибудь md5 и использовать уже этот хэш как ключ
Угу, только не для XOR... куча "нормалных" алгоритмов есть.
Начинайте отсюда: https://en.wikipedia.org/wiki/Symmetric-key_algorithm
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
в чем лучше хранить данные? мастера Общие вопросы .NET 12 18.05.2017 05:50
Где лучше хранить настройки программы Paleolit C++ Builder 6 10.06.2012 10:33
Drupal где лучше хранить доп. модули Alexei91 WordPress и другие CMS 3 13.12.2011 09:26
Как лучше хранить фото в базе? GenniY Свободное общение 0 19.07.2010 10:35