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