Я думаю, что могло бы быть гораздо более простое решение.
Согласно вашему утверждению, у вас есть 26 знаков пробела. Однако, чтобы уточнить, что я понимаю как персонаж, и что вы понимаете под персонажем, давайте немного покопаемся.
MD5 хэш в соотв. в Википедии выдает 16 байтов хэшей.
Алгоритм CRC32 генерирует 4-х байтовые хэши.
Я понимаю "символы" (в самом простом смысле) как символы ASCII. Каждый символ ascii (например, A = 65) имеет длину 8 бит.
Аглоритм MD5 имеет 16 байтов * 8 бит на байт = 128 бит, CRC32 - 32 бита.
Вы должны понимать, что хеши не являются математически уникальными, но "могут быть уникальными".
Таким образом, мое решение, учитывая ваше описание, было бы представить биты хэша как символы ascii.
Если у вас есть выбор только между MD5 и CRC32, ответ будет MD5. Но вы также можете добавить строку SHA-1 160-битный хэш <26 символов (длина будет 20 символов ascii). </strong>
Если вас беспокоит набор символов, который использует каждый хеш, оба хеша находятся в наборе [A-Za-z0-9] (я полагаю).
Наконец, когда вы конвертируете то, что по существу является числами, из одной базы в другую, число не меняется, поэтому сила алгоритма не меняется; это просто меняет способ представления числа.