我有一个非常简单的加密类,使用tripleDES加密我网站上特定页面的查询字符串。我这样做是为了防止人们根据我们的数据库ID顺序抓取页面。
无论如何,我已经习惯了 this encryption method
但是,它包含3d%
和其他一些special characters
,它们不应位于查询字符串中,并且出于安全考虑而被Url Scan拒绝。生成的实际加密字符串中有=
。我不想更改网址扫描,但我想知道是否有办法限制 <{1}}或其他内容的加密字符。我对加密几乎一无所知,我实际上只是混淆了查询字符串,因此我对其对查询字符串加密的其他选项持开放态度。
答案 0 :(得分:9)
您链接的方法使用Base64 encoding将加密的字节数组(可能包含各种“不可打印”字节)转换为仅包含A
- {的表单{1}},Z
- a
,z
- 0
,9
,+
和/
。
但是,最后3个不适用于网址。
你可以在Base64字符串上做一个简单的=
,用URL安全字符替换这些字符,例如String.Replace
=&gt; +
,-
=&gt; /
和_
=&gt; =
。你甚至可以完全放弃.
,因为它们只是填充字符。 (进行前两次替换并删除=
是suggested by RFC3548。)
然后,当您想要解密字符串时,只需反转此替换。如果您完全删除=
,请添加=
,直到字符串的长度为4的倍数。
答案 1 :(得分:3)
如果您不知道自己在做什么(即使您这样做),也不应该使用加密技术。相反,请按原样使用加密,并使用UrlEncode结果。