解码时哈希在 .NET 中不起作用
Hashids not working in .NET when decoding
我正在使用 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 而不是降低了一个。
我正在使用 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 而不是降低了一个。