限制加密中使用的字符

use*_*838 4 .net c# encryption asp.net-mvc-3

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

无论如何,我已经使用过 这种加密方法

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

Raw*_*ing 9

您已链接使用的方法Base64编码的加密的字节数组转换-这可能有各种在它"不可打印"的字节-成将只包含一种形式A- ,Z- a,z- 0,,9 和.+/=

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

您可以String.Replace在Base64字符串上执行简单操作,将这些字符替换为URL安全字符,例如+=> -,/=> _==> ..你甚至可以完全放弃它=,因为它们只是填充字符.(制作的前两个替换和丢弃=由RFC3548建议).

然后,当您想要解密字符串时,只需反转此替换.如果=完全删除,请添加,=直到字符串的长度为4的倍数.