Ваша цель - сократить URL или создать хеш-функцию?
Если ваша цель - создать укороченный URL-адрес, то вам не нужна хеш-функция. В этом случае вы просто хотите предварительно сгенерировать последовательность криптографически защищенных случайных чисел, а затем назначить каждому URL-адресу кодируемый уникальный номер из последовательности.
Вы можете сделать это, используя код как:
using System.Security.Cryptography;
const int numberOfNumbersNeeded = 100;
const int numberOfBytesNeeded = 8;
var randomGen = RandomNumberGenerator.Create();
for (int i = 0; i < numberOfNumbersNeeded; ++i)
{
var bytes = new Byte[numberOfBytesNeeded];
randomGen.GetBytes(bytes);
}
Использование генератора криптографических чисел очень затруднит прогнозирование генерируемых вами строк, что, я полагаю, важно для вас.
Затем вы можете преобразовать 8-байтовое случайное число в строку, используя символы в вашем алфавите. Это в основном смена базового расчета (с базы 256 на базу 62).