Чтобы понять насколько хорошо там всё зашифровано, достаточно было провести элементарный криптоанализ и можно было бы судить о крутостиполученного механизма хотя бы как-то относительно реальности. А то, что-то зашифровали, что-то расшифровали… Хоть бы данные выложили
Там эти пароли еще и не поменять )
Возможно все не так плохо. У меня сейчас под рукой нет этой штуки, может быть там вход в это меню есть только после основной авторизации. Поскольку она basic, то может создаться впечатление, что пускает вообще всех подряд
Если зайдете на точку (проверяли с WAP1750) по урлу <точка>/engineer.html
и введете User: engineer Password: engineerpwd
то сможете во-первых увеличить количество доступных каналов, во вторых мощность (это как раз галочка «инженерный режим»)
Я ни один из методов не рекомендую, я просто о них рассказал, а какой из них предпочтительней решать разработчикам. Разве где-то написано «генерим ID для банковских транзакций»? Я еще раз напоминаю, статья о том, что есть много абсолюто разных способов решать одну и ту же задачу — генерировать числа не по порядку без повторений.
предотвратить или хотя бы затруднить возможность прямого перебора значений
Все описанные в статье способы как минимум затрудняют прямой перебор значений просто потому что идут не по порядку, как максимум делают это криптостойкими способами. Что не так то?
При чем тут криптостойкость ГПСЧ? ГПСЧ абсолютно не обязательно генерируют неповторяющиеся последовательности, а статья как раз про них.
Цель статьи показать, что генерировать неповторяющиеся числа не по порядку можно разными способами и абсолютно не обязательно далать это криптостойко. Но можно и упороться, про это как раз два последних способа.
Должно быть просто, если использовать подход с алгоритмом BPS из предыдущей статьи.
Если делать всё честно, то:
1) Определяете свой алфавит, его размер будет основанием системы счисления, base
2) Определяете сколько символов у вас будет в айдишке Назовем длину len. Если 10, то максимальная айдишка это base^10 -1.
3) Заводите массив интов, размером с len, но в котором значения могут быть лишь в диапазоне 0..base-1
Всё, основа готова. Зашифрованный массив получится такой же длины, а значения в нём будут индексами букв из вашего алфавита.
Чтобы получить следующее значение, вам нужно инкрементнуть массив, это делается буквально двумя строчками кода
func increment(counter []byte, base int) {
for i := len(counter) - 1; i >= 0; i-- {
counter[i] = (counter[i] + 1) % base
if counter[i] != 0 {
break
}
}
}
Но вообще, вся эта свистопляска с основаниями нужна по сути только в части вывода при шифровани и ввода при зашифровывании. Внутри там всё равно используется bigInt, если немного подковырять, можно работать напрямую с ним, минуя ненужные преобразования.
И если всё сделать правильно, получится преобразование ID -> ваш алфавит и обратно безо всяких лишних проверок
Ленивые преподы сначала заводили в админке правильный ответ, а потом неправильные, у правильного ID была наименьшей. Потом в исходнике страницы просто смотрели какой из вариантов ответа наименьший, он чаще всего и был правильным
Отберите зачёркиватель текста у того, кто писал статью, плз.нужно при старте приложения вызвать метод Help()
ПТРК «Малютка-П» или «Хризантема-С»
Возможно все не так плохо. У меня сейчас под рукой нет этой штуки, может быть там вход в это меню есть только после основной авторизации. Поскольку она basic, то может создаться впечатление, что пускает вообще всех подряд
и введете User: engineer Password: engineerpwd
то сможете во-первых увеличить количество доступных каналов, во вторых мощность (это как раз галочка «инженерный режим»)
Все описанные в статье способы как минимум затрудняют прямой перебор значений просто потому что идут не по порядку, как максимум делают это криптостойкими способами. Что не так то?
Цель статьи показать, что генерировать неповторяющиеся числа не по порядку можно разными способами и абсолютно не обязательно далать это криптостойко. Но можно и упороться, про это как раз два последних способа.
Если делать всё честно, то:
1) Определяете свой алфавит, его размер будет основанием системы счисления, base
2) Определяете сколько символов у вас будет в айдишке Назовем длину len. Если 10, то максимальная айдишка это base^10 -1.
3) Заводите массив интов, размером с len, но в котором значения могут быть лишь в диапазоне 0..base-1
Всё, основа готова. Зашифрованный массив получится такой же длины, а значения в нём будут индексами букв из вашего алфавита.
Чтобы получить следующее значение, вам нужно инкрементнуть массив, это делается буквально двумя строчками кода
Но вообще, вся эта свистопляска с основаниями нужна по сути только в части вывода при шифровани и ввода при зашифровывании. Внутри там всё равно используется bigInt, если немного подковырять, можно работать напрямую с ним, минуя ненужные преобразования.
И если всё сделать правильно, получится преобразование ID -> ваш алфавит и обратно безо всяких лишних проверок