ASP.NET 快乐建站系列 电子期刊(Enewsletter)内容中客户独一链接的巧妙加密
背景:
公司经常要发出一些Enewsletter,里面含有一些特定的链接,当用户点击的邮件内链接的时候,会根据用户的信息带客户到不同的页面,对一些客户会让他们填写表格,而这些表格一开始已经提前放置了客户的基本信息。
客户的来源可能是从公司站点的原有注册用户,也有可能来自公司从其他地方收集的信息。-- 补充一句,这不同于一般的垃圾邮件,而是针对特定群体的邀请信。
问题:
实现的需求的速度是越快越好,所以取巧直接用了客户的电子邮件放置在链接当中,但是如何不让客户或其他人看到甚至修改呢?
实现:
哈!好在asp.net有个国度叫System.Security.Cryptography.
在此国度内居住的一类群体专管加密解密…
来创建一个针对本次需求的类:
public static class SimpleSecurity { private const string MyKey = "uptoyou"; static public string Decrypt( string myString, bool urlDecode) { TripleDESCryptoServiceProvider cryptDES3 = new TripleDESCryptoServiceProvider(); MD5CryptoServiceProvider cryptMD5Hash = new MD5CryptoServiceProvider(); cryptDES3.Key = cryptMD5Hash.ComputeHash(ASCIIEncoding.ASCII.GetBytes(MyKey)); cryptDES3.Mode = CipherMode.ECB; ICryptoTransform desdencrypt = cryptDES3.CreateDecryptor(); byte [] buff = Convert.FromBase64String(myString); return ASCIIEncoding.ASCII.GetString(desdencrypt.TransformFinalBlock(buff, 0, buff.Length)); } static public string Encrypt( string myString) { TripleDESCryptoServiceProvider cryptDES3 = new TripleDESCryptoServiceProvider(); MD5CryptoServiceProvider cryptMD5Hash = new MD5CryptoServiceProvider(); cryptDES3.Key = cryptMD5Hash.ComputeHash(ASCIIEncoding.ASCII.GetBytes(MyKey)); cryptDES3.Mode = CipherMode.ECB; ICryptoTransform desdencrypt = cryptDES3.CreateEncryptor(); byte [] buff = ASCIIEncoding.ASCII.GetBytes(myString); return s = Convert.ToBase64String(desdencrypt.TransformFinalBlock(buff, 0, buff.Length)); } }
要想加密客户的邮件生成所要的url地址,你可以:
SimpleSecurity.Encrypt(email);
生成的字符串可能类似于:6OpKSqWe57SAHBhmJJsF7Q%3d%3dccc, 因为Key在你的手上,别人要解密可能性很低。
接下来如果你想从客户页面请求的地址中解密得到他的邮件,只需要:
if (Request.QueryString[" u "] != null ) email = SimpleSecurity.Decrypt(Request.QueryString[" u "]);
简单且安全,有什么不足之处希望大家海涵,欢迎回帖讨论,欢迎关注,欢迎大家提出不同观点。
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于ASP.NET 快乐建站系列 电子期刊(Enewsletter)内容中客户独一链接的巧妙加密的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did50944