使用AES加密并传入查询字符串,Html.Encode会使它工作吗?

时间:2009-06-09 15:03:44

标签: c# encryption encoding

我使用AES加密并传入querystring,Html.Encode会正确转换所有字符,这样调用Decode会产生相同的字符串吗?

4 个答案:

答案 0 :(得分:3)

我试图做同样的事情,并在这里找到答案:

Encrypting a value using MySQL's AES_ECRYPT function, then passing it in a URL string, using PHP

斜杠可能会导致问题,即使在编码url时也是如此。对我有用的解决方案是转换为十六进制,将其传递给URL,然后在解密之前恢复为二进制。

答案 1 :(得分:1)

HTML编码与URL编码不同。如果要在HTML文档中输出URL,则使用HTML编码。它逃脱了HTML的东西。要在HTML页面中输出URL,您应首先对值进行URL编码以生成有效的URL,然后在要在HTML页面中编写时对其进行HTML编码。

使用HttpUtility.UrlEncode。或者,您可以先使用byte[]Convert.ToBase64String转换为base64,然后使用HttpUtility.UrlEncode对其进行编码。它可能会生成一个较短的URL。

答案 2 :(得分:0)

在将HttpUtility.UrlEncode放入查询字符串之前调用它将对其进行正确编码。

在接收端,QueryString属性已经对值进行了解码,因此您不应该调用任何解码方法(Convert.FromBase64String除外)

答案 3 :(得分:0)

AES以面向字节的方式加密。要在查询字符串中传输字节,您需要将其转换为文本。一种方法是使用Convert.ToBase64String()。

一旦转换为文本,您需要确保通过UrlEncode()正确编码任何非字母数字。

在接收端,如果它已经是UrlDecoded(),你应该能够通过Convert.FromBase64String()将文本转换为加密的字节流,然后解密生成的字节数组。