哈希值在.net解码时不工作

本文关键字:工作 解码 net 哈希值 | 更新日期: 2023-09-27 18:18:49

我使用Hashids来隐藏URL中的数据库id。下面是我对hashid的初始化:

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]);

哈希值在.net解码时不工作

最后,在@Heinzi的帮助下,我能够发现到底发生了什么。问题出在我的web应用的URL检测系统上。它检测URL并在DIV中加载内容。该系统将完整的URL小写化。因此,更改包含大写字母的散列。在检测id时,我只是使用了实际的URL而不是降低的URL。