Приветствую всех. Допустим я хочу выпускать интернет карты. Для карты нужны логин и пасс. Скажите пожалуйста, есть ли какие нибудь программы для генерации этих строк?
Вот тут посмотри: http://www.winasm.net/forum/index.php?showtopic=719 может подойдет Автор бывает на этом форуме.
keepassX - кросплатформена - наилучший вариант, по моему мнению! можно использовать openssl (*nix/win)
#include <iostream.h> #include <stdlib.h> #include <time.h> #define NPAS 100 #define NSYM 12 char s[]={"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!@#$%^&(){}[]"}; main() { int i j; struct time t; gettime(&t); srand(t.ti_sec*100+t.ti_hund); for (j=0;j<NPAS;j++) { for (i=0;i<NSYM;i++) cout << s[rand()|(RAND_MAX|(sizeof(s)-1))]; cout << endl; } }
Хотя да, лучше везде юзать rand. Круто будет по одной интернет карте восстанавливать все остальные...
Вот тебе пароль, сгенерированный этой прогой: $xX0~doUGz9O. Начинай, восстанавливай. Какой был следующий в списке? А какой предыдущий? Время пошло.
drmad Я ничего не собираюсь восстанавливать. Я лишь отметил твой дилетантский подход к задаче требующей криптографической стойкости. Вкратце метод восстановления состоит в подборе seed под известный пароль, и последующей генерации паролей с помощью перебора seed в малом диапазоне от первоначального значения. Так как при инициализации значение seed меняться может лишь в течении секунды, то вообще велика вероятность полного совпадения при генерации нескольких паролей за раз. Максимальная стойкость сгенерырованых паролей любой длины будет равна 2^32, что при использовании их к пример для шифрования данных делает вскрытие практически мгновенным. Если ты умный человек, то после этого обьяснения ты должен осознать свою ошибку. Если же не осознал, то удачи в применении таких "криптостойких" паролей. Если же мое мнение для тебя ничего не значит, то запости свой генератор на какой-нибудь адекватный криптографический форум, вроде pgpru.com. Посмотрим какие там будут отзывы о его "стойкости".
В этой теме гораздо более интересен механизм генерации цифровой строки в картах для оплаты мобильных телефонов. Никаких логинов и паролей, просто длинное число ) Единственная секьюрность тут - блокировка телефона посе трех попыток. Думаю с картами можно сделать точно так же. 3 раза абшибся и досвидос )
можно уменьшить общее число итераций цикла в сорце выше, если поменять местами внутренний и внешний цикл; (не на много, но все же), и в итоге будем иметь 1212 итераций вместо исходных 1300
n0name можно и так сказать. я отталкивался от аналогии с примером из книги "Совершенный Код" Стива Макконнелла: Код (Text): for ( column = 0; column < 100; column++ ) { for ( row = 0; row < 5; row++ ) { sum = sum + table[ row ][ column ]; } } ну и здесь та же картина имхо.
А я специально спровоцировал всех желающих. (смайлик в посту заметил? это оно и есть.) Только я ждал большего. Я ждал, что кто-нибудь приведет в ответ пару-тройку издохников, кто-то начнет критиковать и т.п. Что-то пока не дождался. Ну ладно, что имеем, то имеем. И совсем не 2^32. В минуте 60 секунд, в секунде 100 сотых (хотя, конечно, это зависит от текущего режима работы таймера и от операционной системы ), итого 6000 различных затравок. Если брутфорсить, то имеем примерно 6000х4 млрд=24*10^12 вариантов. А это уже достаточно много. Кроме того, (не уверен на 100%, но надо посмотреть в стандарт ANSI) rand() - 32-битовый датчик с 16-битовым выходом. Т.е. цикл зафиксировать, например, методом Флойда, не получится. Да и вообще не получится, т.к. мы имеем сначала mod 2^16, а потом, фактически, еще и mod (длина алфавита). Т.е. один и тот же пароль может генерировать разные цепочки "последышей". Так что я не собираюсь признавать свою "ошибку", а призываю убедиться (или опровергнуть, но убедительно!), что для _данной_ задачи криптографической стойкости этой тупой генерилки вполне хватит. И с запасом.