Как создать надежную строку пароля в C ++? - PullRequest
1 голос
/ 13 января 2009

Хотел бы создать надежный пароль в C ++. Есть предложения?

  • Я предполагаю, что он должен использовать альфа (верхний и ниже), числовые, специальные символы.

  • Было бы хорошо иметь возможность укажите минимальную длину.

  • Было бы здорово избегать персонажей которые трудно различить визуально как "О" и "О"

  • Было бы здорово аннулировать все символы одинаковые, словарные слова, перевернутые слова, имена.

Есть еще советы? Где я могу найти такой код?

Ответы [ 5 ]

3 голосов
/ 13 января 2009

Есть несколько способов. Легкий не обязательно лучший

Создайте строку, представляющую все символы, которые вы хотите определить (т. Е. Ни O, ни 0, ни что угодно), затем заполните строку произвольной длины случайными символами из этого набора.

Следующий шаг - продолжать генерировать, пока вы не пройдете все утверждения. То есть проверка словарных слов, обратных имен и т. Д.

Будут времена, когда генерация занимает больше времени, чем ожидалось, но все равно должна быть быстрее, чем вы можете заметить.

2 голосов
/ 13 января 2009

APG (Automated Password Generator) реализует все, кроме вашего последнего требования (без слов словаря / имен пользователей / повторяющихся символов). Он включает в себя как произносимые, так и полностью случайные алгоритмы генерации паролей. Произносимые пароли выглядят примерно так:

yevGaijra
clishahopp
jewnAms8
RacMevOm
Duheamch&
raicsant~

Он написан на C и доступен по лицензии, подобной BSD.

Криптографически говоря, я не уверен, что ваше последнее требование действительно ...? Если генерация пароля действительно случайная, то пароль aaaaaaaa столь же вероятен, как и пароль 6-n&1jIK, и если ваш злоумышленник знает ваш алгоритм, то запретив пароли, такие как aaaaaaaa, вы уменьшите число атакующего. пространство поиска.

2 голосов
/ 13 января 2009

Вы можете использовать генератор случайных чисел OpenSSL , а затем base64 его кодировать. (Не получит вас все виды случайных персонажей, но вы получите много.) К сожалению, он также не будет использовать аналогичный символьный пароль. Мой любимый генератор здесь , и он предоставляет функции, о которых вы говорите. (Только для интернета, к сожалению)

1 голос
/ 13 января 2009

Существуют документированные требования, которые используются несколькими источниками, например FIPS 181 .

Я бы посоветовал взглянуть на документацию по популярной утилите Automated Password Generator . Глядя на предоставляемые им опции и возможности, они могут иметь большое значение для вас.

Кроме того, посмотрите на проверку сгенерированных вами паролей, чтобы они соответствовали пороговому значению для вашего приложения.

В Википедии также перечислены существующие проекты и стандарты.

1 голос
/ 13 января 2009

Вы можете попробовать устройство TRNG плюс несколько хорошо известных алгоритмов , лучший способ вести с ним;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...