Я читаю онлайн-документ, который объясняет, как разработать сервис сокращения URL-адресов. Веб-сайт https://www.educative.io/courses/grokking-the-system-design-interview.
В разделе «Кодирование реального URL» они сказали -> «Мы можем вычислить уникальный га sh (например, MD5 или SHA256 и т. Д. c.) Данного URL. Ха sh затем можно закодировать для отображения. Это может быть base36 ([az, 0-9]) или base62 ([AZ, az, 0-9]), и если мы добавим «+» и «/», мы можем использовать Base64 Кодирование. Резонный вопрос: какой длины должна быть короткая клавиша? 6, 8 или 10 символов. "
" Если мы используем алгоритм MD5 в качестве нашей функции ha sh, она ' создаст 128-битное значение ha sh. После кодирования base64 мы получим строку, содержащую более 21 символа (поскольку каждый символ base64 кодирует 6 битов значения ha sh). Так как у нас есть место только для 8 символов на короткую клавишу, как тогда мы выберем наш ключ? Мы можем взять первые 6 (или 8) букв для ключа. Это может привести к дублированию ключа, чтобы разрешить это, мы можем выбрать некоторые другие символы из кодировки строка или замена некоторых символов. "
Я использовал онлайн генератор MD5 ha sh (http://onlinemd5.com/) и кодировщик Base64 (https://www.base64encode.org/) для проверки вышеуказанного. Я использовал "www.yahoo.com" в качестве входной строки для MD5 га sh, и на выходе было 1B03577ED104F16AADC00A639D33CB44. Тогда я Base64 закодировал его и получил MUIwMzU3N0VEMTA0RjE2QUFEQzAwQTYzOUQzM0NCNDQ = с UTF-8 целевой кодировкой и Unix разделителем новой строки.
Может кто-нибудь объяснить, правильно ли я делаю? Я вижу, что количество символов больше 21.