我正在使用Hashids隐藏URL中的数据库ID。以下是我对Hashids的初始化:

public static Security.Hashids HashOps = new Security.Hashids("Sl212", 5);


Security是项目的名称空间,在其中复制了Hashids.cs文件。编码工作正常,但解码抛出IndexOutOfRangeException异常。这就是我解码的方式:

int fileID=HashOps.Decode(FileID)[0];


我尝试了很多盐和不含盐,但是它一次又一次抛出相同的异常。我正在使用文件中的原始代码。除了命名空间,我什么都没改变。

请告诉我应该怎么做?尝试了12个小时后,我的头脑陷入了僵局。

更新

我在控制台应用程序中运行的测试代码也抛出异常:

Hashids HashOps = new Hashids();
string hash = HashOps.Encode(212);
Console.WriteLine("Encoded: " + hash);
Console.WriteLine("Decoded: " + HashOps.Decode(hash)[0]);

最佳答案

最后,在@Heinzi的帮助下,我能够检测到实际发生的情况。问题出在我的Web应用程序的URL检测系统上。它检测URL并将内容加载到DIV中。该系统将完整的URL转换为小写。因此,更改包含大写字母的哈希。在检测ID时,我只使用了实际的URL,而不是降低了URL。

09-30 17:43