C# 限制加密中使用的字符
我有一个非常简单的加密类,它使用三元组来加密我站点上特定页面的查询字符串。我这样做是为了防止人们根据数据库ID顺序抓取页面 不管怎样,我用过C# 限制加密中使用的字符,c#,.net,asp.net-mvc-3,encryption,C#,.net,Asp.net Mvc 3,Encryption,我有一个非常简单的加密类,它使用三元组来加密我站点上特定页面的查询字符串。我这样做是为了防止人们根据数据库ID顺序抓取页面 不管怎样,我用过 但是,它包括3d%和一些其他特殊字符,这些字符不应出现在查询字符串中,并且出于安全目的被Url扫描拒绝。在生成的实际加密字符串中有一个=。我不想更改URL扫描,但我想知道是否有一种方法可以限制tripleDES加密提供程序的加密字符。我对Encrption几乎一无所知,实际上我只是在混淆查询字符串,所以我对有关查询字符串加密的其他选项持开放态度 如果你不
但是,它包括
3d%
和一些其他特殊字符
,这些字符不应出现在查询字符串中,并且出于安全目的被Url扫描拒绝。在生成的实际加密字符串中有一个=
。我不想更改URL扫描,但我想知道是否有一种方法可以限制tripleDES加密提供程序的加密字符。我对Encrption几乎一无所知,实际上我只是在混淆查询字符串,所以我对有关查询字符串加密的其他选项持开放态度 如果你不知道自己在做什么(即使你知道),也不应该搞乱加密。您链接的方法用于将加密字节数组(其中可能包含各种“不可打印”的字节)转换为只包含a
-Z
,a
-Z
,0
-9
,+/code>,的形式,/
和=
但是,最后3个不适合URL
您可以执行一个简单的字符串。替换Base64字符串上的,将这些字符替换为URL安全字符,例如+
=>-
,/
=>.
和=
。您甚至可以将=
完全从末尾删除,因为它们只是填充字符。(进行前两次替换并删除=
是不正确的。)
然后,当您想要解密字符串时,只需反转此替换。如果您完全删除了=
,请添加=
,直到字符串长度为4的倍数。不要加密查询字符串,您应该阻止人们查看他们无权查看的页面。这与URL编码相比,并不是“弄乱加密”。输出是限制加密字符吗?我不同意。下面的解决方案不是,但试图告诉加密哪些是有效字符会扰乱密钥空间。改变编码是不同的,但这不是OP的问题。试图引导OP远离试图修改密码本身。哦,是的,我现在想起来了。我想到了那个评论,然后意识到他试图改变加密,所以决定不发表评论,然后。。。还是忘了评论了?我的坏:)谢谢你。实际上,我最终把它转换成了一个十六进制字符串,所以也做到了这一点。同样的想法,所以有一个答案!再次感谢。