广东建设信息网站首页,网站关键词排名怎么优化,b2b平台定制开发,注册个网站域名多少钱一年什么是RSA 来看一下百度百科的解释。RSA公钥加密算法是1977年由罗纳德李维斯特(Ron Rivest)、阿迪萨莫尔(Adi Shamir)和伦纳德阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。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);}
前端代码:
这里只贴出加密方法:
?
参考文章:
http://www.cnblogs.com/guogangj/archive/2012/03/05/2381117.html
转载于:https://www.cnblogs.com/maplecumt/p/4535019.html