У вас есть несколько вариантов:
- Base36 соответствует вашим заявленным требованиям
- Base64 короче, но у вас есть проблема с выходом из финальных = 1006 *
Одна из фундаментальных проблем, с которой вы столкнулись, заключается в том, что чем короче вы ее делаете, тем труднее ее правильно запомнить. Поэтому вам нужно подумать, хотите ли вы, чтобы это было для копирования / вставки или для запоминания людьми.
Для копирования / вставки я бы, вероятно, пошел с выравниванием base64, заданным так, чтобы избежать равенства на конце (но вы могли бы изменить = на _ и преобразовать обратно на сервер).
Для человека, читающего, предложил бы сделать что-то совсем другое.