почему он использует "ErrCounter> = limt" в условии? - PullRequest
0 голосов
/ 29 апреля 2019

в диаграмме конечного автомата, я не понимаю, почему условие ErrCounter> = limit.Я думаю, что это хорошо, чтобы написать ErrCounter == предел.

there is image contain the state machine diagram

1 Ответ

1 голос
/ 29 апреля 2019

ErrCounter >= limit сильнее ErrCounter == limit. У вас есть прибыль без риска.

Это на всякий случай. Проблема в том, что может быть что-то еще, что увеличивает ErrCounter, в то время как в одном из состояний (или даже в переходном состоянии) или ErrCounter может уже быть равным пределу при запуске процесса (кстати, это должно привести к отклонению в любом случае). но не берите в голову).

Давайте сделаем это примером из жизни. Представьте себе эти два сценария (скажем, limit = 3):

  1. Держатель карты уже пробовал трижды в какой-то другой точке (например, в магазине), не используя правильный пин-код. Сейчас ErrCounter = 3. Держатель карты решает попробовать еще раз в банкомате. Банкомат считывает ErrCounter (как часть Authentication) и, поскольку CheckPin не удалось (автоматически из-за слишком большого количества предыдущих попыток), теперь ErrCounter снова увеличивается (поэтому ErrCounter = 4). В слабом случае вы можете попробовать снова и снова в бесконечном цикле.

  2. Карта дублирована (вы знаете, теперь она может обрабатываться, например, через любой телефон NFC). Представьте, что два человека хотят снять большую сумму, чтобы они одновременно работали в двух банкоматах. Неудача в том, что они оказываются в ситуации, когда оба они дважды ошибаются, вводя PIN-код. Допустим, банкомат читает текущий ErrCounter как часть Authentication. Итак, имеем (в скобках результирующий ErrCounter):

    • партнер 1 вводит неправильный PIN-код на банкомате1 (ErrCounter = 1)
    • партнер 2 вводит неверный PIN-код на банкомат2 (ErrCounter = 2)
    • партнер 1 вводит неверный PIN-код на банкомат 1 (ErrCounter = 3). Попытка партнера 1 (с телефоном) теперь отклонена
    • партнер 2 вводит неверный PIN-код на банкомат 2 (ErrCounter = 4). Если бы не было >=, это снова поставило бы бесконечный цикл попыток. При более сильном неравенстве эта попытка также отклоняется.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...