Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 限制加密中使用的字符_C#_.net_Asp.net Mvc 3_Encryption - Fatal编程技术网

C# 限制加密中使用的字符

C# 限制加密中使用的字符,c#,.net,asp.net-mvc-3,encryption,C#,.net,Asp.net Mvc 3,Encryption,我有一个非常简单的加密类,它使用三元组来加密我站点上特定页面的查询字符串。我这样做是为了防止人们根据数据库ID顺序抓取页面 不管怎样,我用过 但是,它包括3d%和一些其他特殊字符,这些字符不应出现在查询字符串中,并且出于安全目的被Url扫描拒绝。在生成的实际加密字符串中有一个=。我不想更改URL扫描,但我想知道是否有一种方法可以限制tripleDES加密提供程序的加密字符。我对Encrption几乎一无所知,实际上我只是在混淆查询字符串,所以我对有关查询字符串加密的其他选项持开放态度 如果你不

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

不管怎样,我用过


但是,它包括
3d%
和一些其他
特殊字符
,这些字符不应出现在查询字符串中,并且出于安全目的被Url扫描拒绝。在生成的实际加密字符串中有一个
=
。我不想更改URL扫描,但我想知道是否有一种方法可以限制
tripleDES加密提供程序的加密字符。我对Encrption几乎一无所知,实际上我只是在混淆查询字符串,所以我对有关查询字符串加密的其他选项持开放态度

如果你不知道自己在做什么(即使你知道),也不应该搞乱加密。您链接的方法用于将加密字节数组(其中可能包含各种“不可打印”的字节)转换为只包含
a
-
Z
a
-
Z
0
-
9
+/code>,的形式,
/
=

但是,最后3个不适合URL

您可以执行一个简单的
字符串。替换Base64字符串上的
,将这些字符替换为URL安全字符,例如
+
=>
-
/
=>
.
=
。您甚至可以将
=
完全从末尾删除,因为它们只是填充字符。(进行前两次替换并删除
=
是不正确的。)


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

不要加密查询字符串,您应该阻止人们查看他们无权查看的页面。这与URL编码相比,并不是“弄乱加密”。输出是限制加密字符吗?我不同意。下面的解决方案不是,但试图告诉加密哪些是有效字符会扰乱密钥空间。改变编码是不同的,但这不是OP的问题。试图引导OP远离试图修改密码本身。哦,是的,我现在想起来了。我想到了那个评论,然后意识到他试图改变加密,所以决定不发表评论,然后。。。还是忘了评论了?我的坏:)谢谢你。实际上,我最终把它转换成了一个十六进制字符串,所以也做到了这一点。同样的想法,所以有一个答案!再次感谢。