目前我正在创建一个在线考试,并且需要通过URL将一小部分信息从一页传递到另一页。加密URL信息
目前,我目前有这样的:
Response.Redirect("Home.aspx?uName=" + txtUserName.Text);
都到主页与它的使用者名称,然后拿起和信息被加载。但是我想要做的是如何加密UserName,以便用户无法玩弄它,也不能猜测它是什么。有没有办法做到这一点?
目前我正在创建一个在线考试,并且需要通过URL将一小部分信息从一页传递到另一页。加密URL信息
目前,我目前有这样的:
Response.Redirect("Home.aspx?uName=" + txtUserName.Text);
都到主页与它的使用者名称,然后拿起和信息被加载。但是我想要做的是如何加密UserName,以便用户无法玩弄它,也不能猜测它是什么。有没有办法做到这一点?
不要使用它。
改为使用Session
。
如果你确实需要通过URL加密(密码加密)数据并使用Base64
(编码转换为可重复字符)进行编码(不要忘记加密'+'符号,因为Base64的确使用它,但浏览器认为它的一个空间......)
一个简单的解决办法是采取回答这个问题:Encrypt and decrypt a string,做这样的事情:
Response.Redirect("Home.aspx?uName=" + Server.UrlEncode(Crypto.EncryptStringAES(txtUserName.Text, "YourEncryptionKey"))
然后你的下一个页面上,只是扭转过程中得到数值退出如下:
var username = Crypto.EncryptStringAES(Request["uName"], "YourEncryptionKey")
但我会问,为什么你通过一个URL传递用户名?使用会员供应商并简单地让用户登录会不会更好?然后,您可以将任何相关信息存储在与该用户关联的数据库中。
实际上,这个问题的答案造成了很多加密错误,在这种情况下它很容易失败。使用内置的crypt可能是最简单的方法,就是使用带有包含在URL中的IV的随机IV加密的Aes加密,然后使用加密结果(使用第二个密钥)的HMAC来计算认证标签(也通过url传递),除非hmac验证,否则甚至不会尝试解密。更好的方法是使用[bouncy castle](http://www.bouncycastle.org/csharp/)的随机IV的AES-GCM。 – jbtule 2012-04-24 21:21:05
我已经为这个问题的答案添加了两种方法的实际代码示例http://stackoverflow.com/a/10366194/637783 – jbtule 2012-04-29 16:11:58
为什么你不加密它,然后解密它?这可能对你有所帮助:http://www.obviex.com/samples/hash.aspx – 2012-04-22 10:26:40
哦,上帝。我会开始看会议和饼干队友。 – Spence 2012-04-22 10:27:01
看到我要使用会话,但我注意到当我去网站和登录等信息被加密,所以我认为这是做到这一点的正确方法 – 2012-04-22 10:28:43