Вероятно, наиболее распространенным подходом будет использование Guid. Он не будет вмещаться в 12 символов, хотя для базы 64 это будет 22 символа, что не соответствует вашим потребностям. Если вам действительно нужно это коротко, то, что я, вероятно, сделаю, это закодирую новый Guid с помощью base64 и просто возьму оставшиеся 12 символов, а затем убедитесь, что он уникален.
var guid = Guid.NewId();
string str = ConvertToBase64(guid.ToByteArray());
return str.Substr(0, 12);
Обратите внимание, что вы должны убедиться, что этот код уникален, выполнив поиск в вашей базе данных. Диапазон мал, чтобы обеспечить уникальность. Возможно, вам было бы лучше просто смягчить требование на 12 символов, но я не знаю ваше приложение.