Re: Шлях на криптографічну вершину
Дано: мінімальна довжина паролю - 8 символів. Довжина солі - 20 символів.
Розпаралелюйте
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → Алгоритми та структури даних, технології → Криптографія → Шлях на криптографічну вершину
Сторінки Попередня 1 2 3 4 5 Наступна
Для відправлення відповіді ви повинні увійти або зареєструватися
Дано: мінімальна довжина паролю - 8 символів. Довжина солі - 20 символів.
Розпаралелюйте
так я в цьому не шарю, я питаю, чи це можливо, взагалі.
типу, один чувак генерить пароль з A по E, а інший з E по N
Сіль наскільки я знаю 16ти бітна. Як і всі хеші. 20 символів на 16 біт дає 2^36 комбінацій це десь в районі 70 міліардів комбінацій. І це без паролю.
Май наувазі що це кількість варіантів для кожного слова по словнику по якому відбувається підбір.
та я ж не збираюсь то робити, просто цікавно, яке воно там є, так шо мені пофіг
Сіль буває різна, але про 16-бітну, та ще й "як і всі хеші", я не чув. Брати сіль довшу, ніж хеш, звісно, не має особливого сенсу (як і пароль).
Ну і пане FakiNyan, ви ж на математичну вершину колись лізли, то невже не в стані самостійно розрахувати кількість комбінацій в залежності від довжини паролю/пари пароль-сіль?
Сіль буває різна, але про 16-бітну, та ще й "як і всі хеші", я не чув. Брати сіль довшу, ніж хеш, звісно, не має особливого сенсу (як і пароль).
Ну і пане FakiNyan, ви ж на математичну вершину колись лізли, то невже не в стані самостійно розрахувати кількість комбінацій в залежності від довжини паролю/пари пароль-сіль?
я все можу, але на все треба час і сили
це, наче, є 94 символи, котрі можуть використовуватись в паролі (маленькі, великі англійські літери, цихври та спеціяльні знаки (без пробіла))
і якщо пароль має 8 символів, то мона нарахувати 6095689385410816 паролей?
і якщо сіль - це таке ж саме, як і пароль, то виходе оте число в квадраті пар сіль-пароль ?
Я мав наувазі що сіль по символах які містить така як хеш. Тобто кожен символ солі це цифри 0..9 та 6 букв a..f, саме цим вона є така як хеші. А не довжину солі. Довжину я брав з вашого повідомлення про 20 символів.
Просто я зауважив, що в тому повідомлені де згадується сіль вона містить символи які в хеші не можуть бути.
Добре, доведеться розжувати. Будь-яка інформація в цифрових комп'ютерах може бути представлена як числа, і це найзручніший спосіб її представлення для математики.
Пароль - це стрічка символів ASCII, тобто набір довільної довжини чисел певного діапазону (зазвичай 32-126) - кодів символів. Іноді запроваджуються інші вимоги до паролів, пов'язані зі способом введення, але в будь-якому разі це буде ланцюжок чисел-кодів символів. Тут є невеличка плутанина: коли ми говоримо про "довжину" пароля, можемо мати на увазі кількість цих символів, а можемо кількість інформації в паролі за Шенноном в бітах.
Хеш-код - це число з обмеженого діапазону (для MD5, наприклад, довжиною 128 біт, тобто від 0 до 3*10^38 з чимось). Коли хеш-код треба представити у читаному людиною форматі, його часто записують у 16-овій системі, тобто як набір символів від 0 до 9 і від a до f (чи від A до F); для MD5, відповідно, буде 32 таких символи.
Сіль при обчислені хеша використовується так само, як і пароль - просто на вхід хеш-функції подається не стрічка "пароль", а стрічка "парольсіль" (або ж "сільпароль", чи "пароль:сіль" і т.д., це не має значення для принципу). Вихідне значення ж буде такої ж довжини, як і будь-який хеш. Тому не має сенсу робити сіль довшою (за кількістю інформації) за хеш - це просто означатиме, що існує якийсь коротший рядок, що утворює такий самий хеш; із тих же міркувань не варто робити сіль і коротшою за хеш. Але очевидно, що якщо ми обмежуємо сіль 16-овими цифрами, то нам доведеться брати більше знаків, ніж можна було б взяти із довільними ASCII-символами.
дивлюся на bcrypt, це такий модуль для ноди, що допомагає шифрувати паролі, і бачу такий код
bcrypt.genSalt(saltRounds, function(err, salt) {
bcrypt.hash(myPlaintextPassword, salt, function(err, hash) {
// Store hash in your password DB.
});
});
тут все ок, генерується сіль, і потім робиться хеш паролю з сіллю.
Сіль - воно ж випадкове має бути, ага?
Тоді чого перевірка паролю не згадує про сіль взагалі?
// Load hash from your password DB.
bcrypt.compare(myPlaintextPassword, hash, function(err, res) {
// res == true
});
а от при генерації солі тре вказати якесь число, зветься воно rounds, ось це число треба обирати якимось складним?
так, я забув, це спочатку генериться сіль, а потім вона додається до хешу пароля? чи спочатку генериться сіль, додається до паролю, а потім генериться хеш солі разом з паролем, як одне ціле?
я тут помітив. що кожного разу сіль генериться різна, але маю одну й ту ж саму довжину, і хеш паролю різний кожного разу, хоча пароль той самий
salt $2b$10$PcrBoppC/H6yUXIC4xpf4e
hash $2b$10$PcrBoppC/H6yUXIC4xpf4e0CxAXzM7tIGfGhENM62vKV49fxUNq5i
salt $2b$15$1XhDAYyw7.XujUrlzCpO4O
hash $2b$15$1XhDAYyw7.XujUrlzCpO4O3fLYdktBQa/W9.wf93AkIV/0355GlNW
угу, одже - сіль кожного разу і має бути різною.
Спочатку генериться сіль, вона додається до паролю, і обчислюється хеш результати. Потім до цього результату додається хеш самої солі, як я зрозумів, і вже це все зберігається в бд.
і хеш паролю різний кожного разу, хоча пароль той самий
Ну так сіль різна, от і хеш буде також різний.
угу, одже - сіль кожного разу і має бути різною.
Сіль може бути й не різною, вона потрібна більше для того, щоб якщо у вас зіпруть хеші паролів, то не змогли через відповідні бази хешів підібрати паролі до ваших хешів.