Значение MD5 составляет всегда 22 (полезных) символа длиной в формате Base64.Многие алгоритмы Base64 также добавляют 2 символа заполнения при кодировании хеша MD5, в результате чего общее количество символов достигает 24.Заполнение не добавляет полезной информации и может быть отброшено.Только первые 22 символа имеют значение.
Вот почему:
Хэш MD5 является 128-битным значением.Каждый символ в строке Base64 содержит 6 битов информации, поскольку для символа существует 64 возможных значения, и для достижения 64 требуется 6 степеней от 2. С 6 битами информации в каждом символе 21 символ имеет 126 битов информации,и 22 символа содержат 132 бита информации.Поскольку 128 бит не могут уместиться в 21 символ, но умещаются в 22 символа (с небольшим запасом места), 128-битное значение всегда будет представлено как 22 символа в Base64.
Примечание на отступе:
Я упоминал выше, что многие алгоритмы кодирования Base64 добавляют пару символов заполнения при кодировании значения MD5.Это потому, что Base64 представляет 3 байта информации в виде 4 символов.Поскольку MD5 имеет 16 байтов информации, многие алгоритмы кодирования Base64 добавляют «==» для обозначения того, что ввод 16 байтов был на 2 байта меньше следующего кратного 3, что было бы 18 байтами.Эти 2 знака равенства не добавляют никакой информации к строке и могут быть отброшены при хранении.