> пример, пускай и надуманный знакового индекса Don Kaban: предположим, кто-то делает интерпретатор паскаля на С++, а в паскале, как известно, индексы массивов могут начинаться и заканчиваться на произвольных значениях.
> Еще раз, в stl контейнерах (о которых и идет речь) нет повода говорить по пользе знаковых индексов Don Kaban: речь идёт о class ObjectContainer, который к stl отношения не имеет.
> Не вижу не одной причины, зачем индексу контейнера надо быть знаковым типом. Don Kaban: значит вам не нужны знаковые индексы. Моё исходное возражение -- против бездумной замены одной догмы (int) на другую (size_t).
> Контроллер выполняет определенное действие если в него ввести корректный одноразовый пароль
И зашифрованное число определяет, что это за действие, так?
Судя по написанному вам должен подойти любой блочный шифр в потоковом режиме (например, в режиме CTR), но крайне желательно вместе с зашифрованным числом (как вариант -- как часть этого числа, если вам нужны не все его биты) передавать уникальное значение для инициализации дешифровщика.
> На ошибочные данные контроллер выдает ошибку.
Вы будете определить ошибку сами, по расшифрованному 32-битовому значению, или ожидаете, что процедура расшифровки вернёт ошибку? Если второе, расшифровщику определённо нужно больше информации, чем 32 бита.
> Последовательность ввода одноразовых паролей в контроллер может не соответствовать последовательности их выдачи сервером.
> Повтор ввода одноразового пароля - тоже ошибка
Это означает, что для шифрования нельзя использовать количество выданных/принятых паролей.
Это также означает, что вам придётся учитывать сработавшие пароли на контроллере, и вы не сможете делать это нарастающим итогом, т.е. потребуется не меньше 100000 бит non-volatile памяти.
Ghost_Inq: оставляю вам этот последний шаг в качестве самостоятельной работы. И пожалуйста, поправьте вопрос так, чтобы после его прочтения было понятно, чего вы хотите.
Армянское Радио: о, прикольно, спасибо. Не знал что у этой техники есть название.