使用RSA实现客户端和后台的非对称加密

什么是RSA

来看一下百度百科的解释。RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。

RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准

今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。但在分布式计算量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战。

RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

客户端和后台的非对称加密

这里的客户端和后台非对称加密是指,用户第一次发起页面请求时,后台(C#)生成一对公钥和私钥,客户端利用JS和私钥对数据进行加密。这里主要是有一个js加密算法和C#加密算法兼容的地方。在客户端进行加密的主要原因是为了防止网络抓包,加密之后的数据即使被抓包,也是密文而不是明文。

代码

后台代码:

  protected string strPublicKeyExponent = "";
        protected string strPublicKeyModulus = "";
        protected string DecryptPassword = "";
        protected void Page_Load(object sender, EventArgs e)
        {
            //创建一个RSA对象
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            if (string.Compare(Request.RequestType, "get", true) == 0)
            {
              //第一次页面请求时
                //将私钥存Session中
                Session["private_key"] = rsa.ToXmlString(true);
            }

            //把公钥适当转换,准备发往客户端
              RSAParameters parameter = rsa.ExportParameters(true);
            RSAEnDecode myRsa = new RSAEnDecode();
            strPublicKeyExponent = myRsa.BytesToHexString(parameter.Exponent);
            strPublicKeyModulus = myRsa.BytesToHexString(parameter.Modulus);
        }

前端代码:

这里只贴出加密方法:

<script src="Scripts/jQuery.md5.js" type="text/javascript" ></script>
<script src="Scripts/BigInt.js" type="text/javascript"></script>
<script src="Scripts/RSA.js" type="text/javascript"></script>
<script src="Scripts/Barrett.js" type="text/javascript"></script>

<script type="text/javascript">
        function cmdEncrypt(originData) {
            setMaxDigits(129); var key = new RSAKeyPair("<%=strPublicKeyExponent%>", "", "<%=strPublicKeyModulus%>"); var Rtn = encryptedString(key, originData);
            return Rtn;
        }
</script>

 

参考文章:

http://www.cnblogs.com/guogangj/archive/2012/03/05/2381117.html

posted @ 2015-05-28 09:04  maplecumt  阅读(2633)  评论(0编辑  收藏  举报