我有一个非常简单的加密类,它使用 tripleDES 来加密我网站上特定页面的查询字符串。我这样做是为了防止人们根据我们的数据库 ID 顺序抓取页面。
反正我用过 this encryption method
但是,它包括 3d%
和一些其他特殊字符
,这些字符不应出现在查询字符串中,并且出于安全目的被 Url Scan 拒绝。实际生成的加密字符串中有一个=
。我不想更改 URL 扫描,但我想知道是否有办法为 tripleDES 加密提供程序
限制 加密字符或者其他的东西。我对 encyrption 几乎一无所知,我真的只是混淆了查询字符串,所以我对有关查询字符串加密的其他选项持开放态度。
最佳答案
您链接的方法使用 Base64 encoding将加密字节数组(其中可能包含各种“不可打印”字节)转换为仅包含 A
-Z
, 的形式a
-z
, 0
-9
, +
, /
和 =
。
但是,最后这 3 个不适合 URL。
您可以对 Base64 字符串执行简单的 String.Replace
,将这些字符替换为 URL 安全字符,例如+
=> -
, /
=> _
and =
=> .
。您甚至可以将 =
完全删除,因为它们只是填充字符。 (进行前两个替换并删除 =
是 suggested by RFC3548 。)
然后当你想解密你的字符串时,简单地反转这个替换。如果您完全删除 =
,请添加 =
直到字符串的长度是 4 的倍数。
关于c# - 限制加密中使用的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12495746/