Я использую Hashids, чтобы скрыть идентификаторы базы данных в URL-адресе. Ниже моя инициализация Hashids:Hashids не работает в .NET при декодировании
public static Security.Hashids HashOps = new Security.Hashids("Sl212", 5);
Security
это пространство имен моего проекта, внутри которого я скопировал Hashids.cs файл. Кодировка работает правильно, но декодирование бросает исключение IndexOutOfRangeException
. Это, как я декодирование:
int fileID=HashOps.Decode(FileID)[0];
Я попробовал его на многие соли и без соли, но его снова и снова бросать же исключение. Я использую исходный код из файла. За исключением пространства имен я ничего не изменил.
Скажите, пожалуйста, что делать? Пробыв в течение 12 часов, мой разум застрял в тупике.
UPDATE
тест код, который я бегу в консоли приложения также бросает исключение:
Hashids HashOps = new Hashids();
string hash = HashOps.Encode(212);
Console.WriteLine("Encoded: " + hash);
Console.WriteLine("Decoded: " + HashOps.Decode(hash)[0]);
Просьба представить [минимальный, полный, проверяемый пример] (http://stackoverflow.com/help/mcve): просто создайте минимальный пример: (1) создает экземпляр Hashids, (2) кодирует некоторое значение (3) декодирует его и выдает исключение, как показано в вашем вопросе. – Heinzi
Почему вы используете Hashids для скрытия идентификаторов базы данных в URL-адресе? –
@AsadSaeeduddin Я предпочел это, потому что он не имеет коллизий и имеет метод декодирования, чтобы вернуть идентификатор. Если у вас есть другие предложения, пожалуйста, сообщите. –