Во время интервью для компании меня попросили представить несколько примеров кода, которые подчеркивают мою «лучшую» работу. Я получил ответ на несколько вопросов, касающихся конкретного примера кода, один из которых был связан с ошибкой.
Пример кода представлял собой веб-службу WCF, которая использует AES для шифрования непрозрачного большого двоичного объекта. BLOB-объект используется службой для идентификации всех ресурсов для конкретного запроса службы. Ошибка заключалась в том, что класс .NET RijndaelManaged использовался с режимом CBC, без правильной настройки IV. Класс RijndaelManaged будет автоматически генерировать соответствующий IV во время создания экземпляра класса, что в образце кода происходит при первом использовании шифрования и сохраняется в течение всего срока службы приложения ASP .NET. Поскольку приложения ASP.NET могут быть перезапущены по разным причинам, возможно, что эти непрозрачные большие двоичные объекты будут «недействительными» от одного вызова службы к другому из-за нового значения IV, сгенерированного во время запуска приложения (ошибка).
Сам вопрос звучал так: «Где IV для расшифровки?»
Мой ответ уже должен признать, что это ошибка; но так как они попросили мою «лучшую» работу, могу ли я СОЛНЦИТЬ на этой должности за то, что представил образец с ошибкой? Что еще я могу сказать?
Я не решаюсь обрисовать ситуацию, потому что не хочу казаться, что я извиняюсь, но код шифрования был отключен, когда наш сервис был в пре-альфа, и проект был убит до того, как мы когда-либо пошел в производство.