Обновить
182
0
Алексей@Scratch

Системный архитектор, криптоманьяк

Отправить сообщение
Отберите зачёркиватель текста у того, кто писал статью, плз.
как справляетесь когда модели меняются?
Я дико извиняюсь, но картинка с таблицей просто угрёбищного качества. Вы не могли бы перезалить её в лучшем качестве?
Убрать ограничения в личных целях можно и менее инвазивным способом, правда не проверял на .core, но на обычном работают

public static class ServiceStackHelper
    {
        static ServiceStackHelper()
        {
            var instance = new MyNet40PclExport();
            PclExport.Instance = instance;
            Net40PclExport.Provider = instance;
            Licensing.RegisterLicense(string.Empty);
        }

        public static void Help()
        {

        }

        private class MyNet40PclExport : Net40PclExport
        {
            public override LicenseKey VerifyLicenseKeyText(string licenseKeyText)
            {
                return new LicenseKey { Expiry = DateTime.MaxValue, Hash = string.Empty, Name = "Habr", Ref = "1", Type = LicenseType.Enterprise };
            }
        }
    }


нужно при старте приложения вызвать метод Help()
а на магазинных компонентах такое можно построить?
А еще к этим названиям добавляют всякие индексы и модификации, получается совсем клинично типа
ПТРК «Малютка-П» или «Хризантема-С»
Чтобы понять насколько хорошо там всё зашифровано, достаточно было провести элементарный криптоанализ и можно было бы судить о крутостиполученного механизма хотя бы как-то относительно реальности. А то, что-то зашифровали, что-то расшифровали… Хоть бы данные выложили
а я работу нашел благодаря своим статьям, инфа 100%
Там эти пароли еще и не поменять )
Возможно все не так плохо. У меня сейчас под рукой нет этой штуки, может быть там вход в это меню есть только после основной авторизации. Поскольку она 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 была наименьшей. Потом в исходнике страницы просто смотрели какой из вариантов ответа наименьший, он чаще всего и был правильным
а еще, я так понимаю, не факт, что они не повторятся, еще и на повторы надо смотреть

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность