Вверх ↑
Ответов: 4622
Рейтинг: 746
#1: 2015-10-20 11:02:58 ЛС | профиль | цитата
Jonson писал(а):
если известно какое слово зашифровано,то расшифровать его можно.
Расшифровать то можно, вопрос во времени.
Для подбора пароля нужно:
- иметь реализованный алгоритм дешифрования (знать его)
- иметь возможность проверить правильность пароля в процессе дешифровки (знать зашифрованный текст, как в твоем случае; использовать предусмотренный алгоритмом способ, например, наличие контрольной суммы в зашифрованных данных; или выдвигать предположения о характере зашифрованного текста).

Во всех случаях требуется полный перебор возможных комбинаций паролей. Скорость перебора (количество проверенных паролей) зависит от:
- скорости генерации очередного пароля
- скорости подготовки пароля внутри алгоритма
- скорости дешифрования данных очередным паролем
- скорости проверки правильности дешифрования
Вместе с длиной пароля и используемым алгоритмом всё это составляет стойкость шифра.
Для пароля в десять символов, состоящего только из цифр 0-9 количество требуемых комбинаций составляет:
10^10 = 10 000 000 000
Если в пароле есть цифры и малые латинские буквы a-z, количество комбинаций будет:
36^10 = 3 656 158 440 062 976
Пароль той же длины, состоящий из рандомного набора байт:
256^10 = 1 208 925 819 614 629 174 706 176

Можешь составить схему простейшего генератора чисел на базе счетчика и засечь сколько комбинаций он выдаёт в секунду. Прикинь себе, что у взломщика в распоряжении будет пусть 1000 вычислительных ядер (потоков). Тогда сможешь оценить минимальное время, требуемое для подбора таких паролей. Естественно, для реальных алгоритмов это будет в несколько раз больше, так как ещё и выполняются перечисленные выше операции кроме генерации пароля.

flint2 писал(а):
Jonson, если это пароль т.е сравнивается что-то с чем-то, то это делается элементарно за 1-3 минуты.
Хм, странно, и как вообще в этом мире что-то может быть секретным...

Jonson писал(а):
но он не знает каким хеш-алгоритмом
Неправильный подход. Следует всегда разрабатывать программу с учетом того, что все используемые алгоритмы известны всем. Если у пользователя есть твоя программа, значит у него есть алгоритм. Учитывать нужно только стойкость алгоритма ко взлому (и не только самого алгоритма, а и всей окружающей обстановки - способы хранения и передачи паролей, человеческий фактор и т.п.).

Jonson писал(а):
А тогда как можно не дать пользователю просмотреть или скачать файл напрямую,то есть через браузер http://сайт.net/file.txt,а его можно скачать только через программу
Самый логичный способ - на сервере файл отдаётся не напрямую, а через PHP-скрипт, который проверяет авторизацию пользователей по базе данных. Пользователь в твоей программе вводит логин и пароль, и при запросе файла ты их прописываешь в заголовки запроса. Скрипт на сервере, соответственно, проверяет по базе.
Можно обойтись и без скрипта, реализовав на сервере Basic или Digest аутентификацию. Но в этом случае файл можно скачать и через браузер, введя логин и пароль.
карма: 26

0