Не уверен, что это можно сделать, так как могу поспорить, что существуют некоторые бизнес-ограничения (например, пользователь должен иметь возможность вводить ключ).
Идея состоит в том, чтобы "хешировать" значение в меньшем количестве мест. Для этого требуется набор символов, достаточно большой для обработки всех комбинаций.
Давайте предположим, что исходный ключ не чувствителен к регистру, у вас 26 + 10 = 32, а затем повышен до 6-й уникальной комбинации (2 176 782 336 уникальных комбинаций). Чтобы сопоставить это только с 4 символами, вы должны использовать набор символов с 216 уникальными символами, так как 216 ^ 6 равен 2 176 782 336 или первое число увеличивается до 4 с большим количеством комбинаций, чем не чувствительный к регистру ключ с числами. (нечувствительность к регистру, плюс цифры только приводит вас к 62).
Если мы возьмем стандартную клавиатуру США, у нас есть 26 букв х 2 случая = 52
10 номеров
10 специальных символов на цифровых клавишах
11 других специальных символов * 2 = 22 * 1007 *
Это 94 уникальных символа, или менее половины уникальных символов, которые вам нужны, чтобы получить безразличный 6-значный код из 4 цифр. Теперь на планете клингон, где клавиатуры намного больше ...; -)
Если ключ не чувствителен к регистру, ваш набор символов должен быть расширен до 489 уникальных символов, чтобы поместиться в 4-значный "хэш". Ой!