4

我有一个非常简单的加密类,它使用tripleDES 来加密我网站上特定页面的查询字符串。我这样做是为了防止人们根据我们的数据库 ID 顺序抓取页面。

反正我用过 这种加密方式

但是,它包括3d%和其他一些special characters不应出现在查询字符串中的内容,并且出于安全目的被 Url Scan 拒绝。=在生成的实际加密字符串中有一个。我不想更改 URL 扫描,但我想知道是否有办法限制加密字符tripleDES crypto provider其他东西。我对加密几乎一无所知,而且我实际上只是在混淆查询字符串,所以我对查询字符串加密的其他选项持开放态度。

4

2 回答 2

10

您链接的方法使用Base64 编码将加密的字节数组(其中可能包含各种“不可打印”字节)转换为仅包含A- Za- z0- 9+和./=

但是,最后 3 个不适用于 URL。

您可以对 Base64 字符串做一个简单String.Replace的操作,将这些字符替换为 URL 安全字符,例如+=> -/=>_==> .。您甚至可以完全放弃=结尾,因为它们只是填充字符。( RFC3548 建议进行=前两个替换并删除。)

然后,当您要解密字符串时,只需反转此替换即可。如果你=完全删除了,添加=直到字符串的长度是 4 的倍数。

于 2012-09-19T13:38:39.433 回答
3

如果您不知道自己在做什么(即使您知道),也不应该使用加密货币。相反,按原样使用加密,然后对结果进行UrlEncode

于 2012-09-19T13:38:19.753 回答