Шешімі: Хранение паролей пользователей
При регистрации в компьютерной системе каждому пользователю выдаётся пароль, состоящий из 11 символов. Из соображений информационной безопасности каждый пароль должен содержать хотя бы одну десятичную цифру, прописные и строчные латинские буквы, а также не менее одного символа из 6-символьного набора: «&», «#», «$», «*», «!», «@». Таким образом, для формирования пароля используют 68-символьный алфавит. В базе данных для хранения сведений о каждом пользователе отведено одинаковое и минимально возможное целое число байт. При этом используют посимвольное кодирование паролей, все символы кодируют одинаковым и минимально возможным количеством бит. Кроме собственно пароля, для каждого пользователя в системе хранятся дополнительные сведения, для чего выделено целое число байт; это число одно и то же для всех пользователей.
Для хранения сведений о 20 пользователях потребовалось 500 байт. Сколько байт выделено для хранения дополнительных сведений об одном пользователе?
Примечание. Латинский алфавит состоит из 26 букв.
Шешімін қадамдап көрсету
5 қадамОпределим минимальное количество бит для кодирования бір символа из алфавита мощностью 68:
$$2^6 = 64 < 68 \leq 128 = 2^7$$Каждый символ кодируется 7 битами, поэтому пароль из 11 символов занимает:
$$11 \cdot 7 = 77\text{ бит}$$Переведём объём пароля в байты. Так как выделяется целое число байт, округляем вверх:
$$\left\lceil \frac{77}{8} \right\rceil = 10\text{ байт}$$На бір пользователя в среднем приходится:
$$\frac{500}{20} = 25\text{ байт}$$Вычтем объём пароля из общего объёма данных пользователя:
$$25 - 10 = 15\text{ байт}$$Где здесь ошибаются
Использовать 6 бит для символа, забывая, что $2^6 = 64 < 68$.
Не округлить 77 бит до целого числа байт.
Вычесть объём дополнительных сведений из общего объёма вместо объёма пароля.