ASP.NET 快乐建站系列 -- 电子期刊(Enewsletter)内容中客户独一链接的巧妙加密

本文介绍了一种使用TripleDES和MD5加密技术来加密电子邮件地址的方法,确保了客户信息的安全性,并提供了具体的ASP.NET实现代码。

标题有点绕,请原谅。这里解释一下…

背景:

公司经常要发出一些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"]);

简单且安全,有什么不足之处希望大家海涵,欢迎回帖讨论,欢迎关注,欢迎大家提出不同观点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值