Здравствуйте. Примерно год назад на Хабрахабре я из некого комментария познакомился с интересным способом хранения паролей без их сохранения. Фраза выглядит странно, но более точно описать род этой программы мне не получилось. Способ заключается в том, что для получения пароля к конкретной учетной записи на конкретном сайте необходимо загнать в хэш-функцию строку, составленную по определенному правилу. Например: keyword+sitename+login
В данной строке keyword – это мастер-пароль, используемый для «хранения» паролей ко всем сайтам. Далее идет адрес конкретного сайта, затем логин. Загнав в хэш-функцию данную строку, мы получим на выходе строку символов, которую полностью или частично можно использовать в качестве пароля к данной учетной записи на данном сайте. Ключевое слово в начале строки обеспечивает надежность всех паролей, сгенерированных таким образом. Длина результата хэш-функции более чем предостаточна для пароля. Но надежность пароля все равно оставляет желать лучшего. Каждый символ такого пароля может принимать только 16 значений, так как результатом хэш-функции является строка чисел в шестнадцатеричном представлении. Я попытался исправить этот недостаток. Далее расскажу как.
Комбинация двух соседних символов может принимать 256 значений, так как представляет собой символьное представление байта. Программа находит остаток от деления числового значения комбинации двух шестнадцатеричных цифр на количество символов в алфавите. Остаток будет номером символа в алфавите.
const string alphabet="1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
Алфавит можно сделать по своему желанию, в зависимости от того, сложный пароль нужен, или простой. Я использовал алфавит из строчных и прописных букв и цифр. Исходник программы довольно простой. Программа консольная. Используются только стандартные библиотеки C++. Простите за быдлокод, я не программист.
Пользоваться программой просто. Вводите мастер-пароль, адрес сайта, логин. Нажимаете enter. Всю необходимую информацию (адрес сайта, логин, длину пароля) можно хранить в голове, но желательно записать на бумажке или сохранить на жестком диске. Эта информация не секретна. А вот мастер-пароль придется запомнить.
Публикую эту статью на Хабрахабре в надежде на вашу помощь. Программой пользуюсь уже год. Буду благодарен за выявленные уязвимости. Я не нашел в сети ни одного аналога данной программы. Наверно из-за того, что не знаю, как называется такой тип программы. Если знаете – скажите, пожалуйста, по каким ключевым словам искать.
В архиве по ссылке находится скомпилированная программа и исходник: ifolder.ru/24958312