Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Время, требуемое на выполнение можно рассчитать, и вывести общую формулу.Мне кажется что потребуется минимум несколько лет, или столетий в крайних случаях. С кодом тоже завтра буду разбираться..засыпаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:29 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЕсли адрес не принадлежит тем адресам, по которым выделена память, то мы получаем undefined behaviour, потому, если мы получаем истинный результат, не факт что он действительно истинный. Хотя если получаем ложный, то наверняка знаем что он ложный. Интересное свойствоUB будет, если _читать_ данные из указателя, который не принадлежит к выделенному куску памяти. Для сравнения чтение не требуется. И, конечно, если мы получили истинный результат, то это факт, что он действительно истинный, из этого адреса можно читать без всяких там UB. Иначе программирование в принципе не возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:33 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TЕсли задача сводится к тому что надо гонять генератор по кругу и иногда получать от него текущее состояние, то можно так Код: plaintext 1. 2. 3. 4. Далее при выводе считаем что i это N-ричное число, где N это количество символов в алфавите отображения, далее переводим значение в нужную систему счисления и выводим. Например: при алфавите a-z это 26-ричная система счисления, тогда значение 1234 будет "avm" Я подумаю над этим. Но мне нужно реализовать развитую систему правил. Например. Чайник неосилил свой pwd от .zip архива и пришёл ко мне. Говорит. "- Я помню что pwd начинался с моего имени TheChainik в разных регистрах (theChainik,THECHAINIK) и содержал дату вида 19## и еще 2 символа верхнего ряда клавиатуры. Пунктуация. С шифтом короче. Я ему грю - не сцы. Ща. Делаю магические страшные колдунства. Код: plaintext 1. И вуаля. Средиземноморье спасено от зла! Profit. Может не сразу. Может через день. Или через недельку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:43 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TКак вариант: можно снимать текущее значение другим потоком. Можно несколько потоков запустить, а результат склеивать. По поводу промежуточного хранения: может не заморачиваться и брать для старта какой-нибудь хэш от текущей даты/времени? PS Только паузу надо добавить чтоб проц не спалить такой считалкой Вот здесь я не совсем понял какая связь между хешем от текущей даты/времени и моей задачей. P.S. Проц достойно охлаждается и даже стоит на балконе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:45 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВремя, требуемое на выполнение можно рассчитать, и вывести общую формулу.Мне кажется что потребуется минимум несколько лет, или столетий в крайних случаях. С кодом тоже завтра буду разбираться..засыпаю. pwd из 20 символов - это маргинальный пример которого я надеюсь никогда не будет. P.S. Что у тебя за часовой пояс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:52 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonP.S. Что у тебя за часовой пояс?в Москве 15:00, во Владивостоке - полночь )) оч. похоже на правду, кмк ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 16:00 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Эк вас разнесло по земному шарику... Ну ладно. Пойду фиксить баги. Работа зовёт. До вечера по GMT+2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 16:06 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonDima TИМХУ Рекурсия тут хорошо подходит, но накладных расходов у нее много, не производительно это. Два дня думаю над сохранением состояния. В случае если юзер нажал Ctrl+C или тикнул таймер (раз в минуту) приложение должно писать состояние своей FSM в какой-нить файл типа /var/run/pwdgen.fsm. При следующем старте с указанием опции --continue процесс должен возобновиться не с нуля а с этого состояния. Причём небольшой "нахлёст" допускается. Для pwdgen это не страшно. Главное - поскипать миллиарды уже отработанных состояний и не потерять работу двух-трех суток. Для варианта с рукотворным Stack или Queue я знаю как это сделать. Правда придётся полностью переколбасить алгоритм и рекуррентную процедуру pa(processAlphabet) развернуть в FSM. Мне это не улыбается. Мне нравится рекурсия и скорость работы пока устраивает. Другое дело что инстанциировать "рекурсию в определённом" состоянии я пока не знаю как. Вобщем это пока предмет основных моих размышлений. Смотри мой вариант выше. Для повышения быстродействия переписал вывод: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Dima TЕсли задача сводится к тому что надо гонять генератор по кругу и иногда получать от него текущее состояние, то можно так Код: plaintext 1. 2. 3. 4. Далее при выводе считаем что i это N-ричное число, где N это количество символов в алфавите отображения, далее переводим значение в нужную систему счисления и выводим. Например: при алфавите a-z это 26-ричная система счисления, тогда значение 1234 будет "avm" ...у меня так и сделано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 16:38 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Sla, понимаешь... как-то оно... слишком негибко получается. Крутить 64х битное число для решения перебора в дереве... А собсно почему в дереве? А потому. Здесь больше тако подход. В исходных данных мы описываем некий паттерн вроде регекспа. Он описывает порождающий генератор. Например паттерн: Код: plaintext 1. Описывает: Код: plaintext 1. 2. 3. 4. 5. Я легко себе представляю его в виде рекурсии. Разложение-же такого дерева в множители 64-х битного числа во первых само по себе задача нетривиальная. Во вторых при некотором количестве делений их сложность уже будет сопоставима с накладными на рекурсию. Тоесть я прогнозирую провал в производительности на шаблоне чуть более сложном чем буквы латиницы. А в плане сохранения состояния - да. Очень удобно. Не спорю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 16:48 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, в этом случае имеем 8 "букв": 1,2,3,4,5,Pwd,Password,Passw. Итого перебираем восьмеричные числа. Для: 0 выведем '1' 7 выведем 'Passw' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 16:56 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Нет бро. Ты будешь флудить запрещёнными комбинациями. Код: plaintext 1. ? У тебя это допускается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:03 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, тогда необходимо "хитрое" число, каждый разряд которого будет в своей системе счисления со своим "алфавитом". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:23 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Slaу меня так и сделано Не совсем. Я вот про что: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Это решение исходной задачи. Правда с небольшим исключением, нет "aa" и "aaa" т.к. это ноль и пишется он как "a". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:32 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Slamayton, тогда необходимо "хитрое" число, каждый разряд которого будет в своей системе счисления со своим "алфавитом".как-то так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:40 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonВот здесь я не совсем понял какая связь между хешем от текущей даты/времени и моей задачей. Я пофантазировал и предположил что возможно начинать крутить счетчик со случайного места, для паролей допустимо. Хэш от даты-времени иногда использую для генерации больших случайных чисел, вместо rand(). Но если последовательность надо соблюдать - тогда надо хранить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:40 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Slamayton, тогда необходимо "хитрое" число, каждый разряд которого будет в своей системе счисления со своим "алфавитом". Думаю да. Но я не знаю как придумать такое "хитрое" число. Пока не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:43 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima Tm_Slaу меня так и сделано Не совсем. Я вот про что: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. Это решение исходной задачи. Правда с небольшим исключением, нет "aa" и "aaa" т.к. это ноль и пишется он как "a".у меня так и сделано только число num у меня сразу хранится в N-ной системе счисления, т.к. операция перевода дорогая в цикле увеличиваю число num, потом вывожу цикл немного другой, но смысл именно такой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:44 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonВот здесь я не совсем понял какая связь между хешем от текущей даты/времени и моей задачей. Я пофантазировал и предположил что возможно начинать крутить счетчик со случайного места, для паролей допустимо. Хэш от даты-времени иногда использую для генерации больших случайных чисел, вместо rand(). Но если последовательность надо соблюдать - тогда надо хранить. Ну... если честно то я искал также псевдослучайный алгоритм выбрасывания паролей из порождающего генератора. Трудность была в том чтобы 100% элементов были извлечены из генератора и чтобы не было повторов. Сами понимаете что класть это всё в массив или в базу данных нельзя. Нет у нас таких ресурсов да и не танцует такая постановка. Всё таки "утилиту" делаю а не облачный сторедж. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:47 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Вобщем.... для инстанциирования думаю надо 0 заменить на некую уже обсчитанную величину. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. По сути функция pa(..) должна видеть некий глобальный вектор инициализации. Как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:56 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 18:14 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonНапример. Чайник неосилил свой pwd от .zip архива и пришёл ко мне. Говорит. "- Я помню что pwd начинался с моего имени TheChainik в разных регистрах (theChainik,THECHAINIK) и содержал дату вида 19## и еще 2 символа верхнего ряда клавиатуры. Пунктуация. С шифтом короче. Я ему грю - не сцы. Ща. Делаю магические страшные колдунства. Код: plaintext 1. Мести чайников юзеров не боишься? Пока давишь кнопки типа "ThEcHaInIkd45g%r18112014" много непечатных слов произнесешь в адрес изобретателя этого чудо-пароля. Может проще в архив зашить кодовое слово, по которому ты найдешь пароль с первого раза? Т.е. генеришь пару паролей, один пишешь в архив, в камменты, вторым шифруешь. Пару пишешь в лог. Потеряли - спрашиваешь первый и по нему ищешь. Тогда длинный пароль не надо. И насчет длины: при использовании алфавита из 70 символов и пароля в 7 символов = 8 триллионов комбинаций, устанешь подбирать. Подумай, надо ли над юзерами издеваться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 18:34 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Sla, ОК. Пожалуй сделаю бранч утилиты. Будет два направления. Рекурсивное и Tricky-численное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 18:37 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TМожет проще в архив зашить кодовое слово, по которому ты найдешь пароль с первого раза? Т.е. генеришь пару паролей, один пишешь в архив, в камменты, вторым шифруешь. Пару пишешь в лог. Потеряли - спрашиваешь первый и по нему ищешь. Тогда длинный пароль не надо. И насчет длины: при использовании алфавита из 70 символов и пароля в 7 символов = 8 триллионов комбинаций, устанешь подбирать. Подумай, надо ли над юзерами издеваться? Да нету у меня такой власти. И не админ я вовсе. Да и никто не соблюдает такие условности. Как говорил Дзюбей Кибогами - куда-бы ты ни пошёл - всюду земля как земля. Небо - как небо. Люди - как люди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 18:41 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonНу... если честно то я искал также псевдослучайный алгоритм выбрасывания паролей из порождающего генератора. Трудность была в том чтобы 100% элементов были извлечены из генератора и чтобы не было повторов. Сами понимаете что класть это всё в массив или в базу данных нельзя. Нет у нас таких ресурсов да и не танцует такая постановка. Всё таки "утилиту" делаю а не облачный сторедж. Вопрос возникает: сгенерил ты последовательность из триллиона триллионов паролей, но они последовательно идут, т.е. узнал сегодняшний - быстро подобрал вчерашний. Надо перемешивать или выбирать случайный, т.е. надо хранить все и удалять использованные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 18:50 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38809996&tid=2019107]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 181ms |

| 0 / 0 |
