青青子衿, 悠悠我心, 但为君故, 沉吟至今
« Google更换新Logo标志新广告法生效 广告宣传不能再任性 »

HTTP使用RSA公钥加密算法加密明文

  网站想要加密传输数据以防被窃取,最可靠的方式莫过于使用公钥加密算法加密,使用HTTPS协议的网站在整个传输过程中都使用了这个技术,对于未能使用HTTPS的HTTP网站我们也可以自行实现。

  功能说明

  由于HTTP是直接传输明文数据的,在网络安全越发严峻的今天,未经加密的HTTP方式已经变得岌岌可危,谷歌公司更是直接表明在搜索结果中会优先考虑使用HTTPS加密的网站。

  尽管整体趋势是向HTTPS倾斜的,但是由于诸多服务器以及CDN等服务商还没全面兼容HTTPS协议,目前要实现整站切换至HTTPS协议可行性还不高。

  同时安全形势又刻不容缓,对此,我们可以自行实现RSA加密私密信息。

  算法说明

  由于多梦数学不是很好,RSA公钥加密算法的具体实现多梦就不多说了,对算法的实现有兴趣的童鞋可以去看看阮一峰的“RSA算法原理”,下面多梦就说说RSA算法的效果。

  RSA算法是非对称加密算法的一种,也叫公钥加密。

  和对称加密算法不同的是,对称加密算法是加密和解密都使用同一把钥匙同一种规则,也就是如果你知道怎么加密的,你就知道怎么解密了。所以算法和密钥不能泄露,否则加密就无意义了。

  而公钥加密算法则是同时拥有两把钥匙,一个叫公钥,一个叫私钥。这两个钥匙是对应的,使用公钥加密的内容只有使用私钥才能解密,使用私钥加密的内容只有使用公钥才能解密。所以算法和公钥都是可以公开的,只要私钥还是私密的,就是安全的。

  实现思路

  由于我们是加密HTTP要发送的数据,所以加密过程是要在客户端浏览器完成的,算法和密钥都需要在发送HTTP数据之前就已经存在浏览器中,此时使用对称加密算法已经无意义,因为别人根据你这个加密可以直接解密。

  所以我们需要选择非对称性加密,在网页中引入算法和公钥加密,然后发送HTTP数据到服务器,服务器再根据私钥解密。因为私钥是私密的,所以算法和公钥公开也是无法解密,也是安全的。

  具体到HTTP请求的加密实现,就是在网页提交表单数据之前使用JavaScript实现公钥加密数据,然后服务器接受到加密数据后,使用PHP或其他服务器语言进行私钥解密。

  扩展阅读

  使用JavaScript实现OpenSSL RSA加密和解密:https://github.com/travist/jsencrypt

  使用PHP实现OpenSSL RSA加密和解密:http://php.net/manual/zh/ref.openssl.php

  来源:投稿,原文链接



  除非注明,月光博客文章均为原创,转载请以链接形式标明本文地址

  本文地址:http://www.williamlong.info/archives/4346.html
  • 文章排行:
  • 1.lzsb
  • 现在发文的都什么玩意
    水平如此之差的文章也发上来
    脑子有病才自己实现
    这种弱智加密逻辑没有一点抗中间人攻击的能力,跟明文没有区别
    白瞎了RSA

    数学不好就不要装B学人家研究加密了,你没那个能力
    123456789 于 2015/9/6 9:01:38 回复
    他的水平固然不高,你这样喷,连他还不如
    多梦 于 2015/9/6 17:14:59 回复
    这么厉害,你解给我看看呗。

    8d2071757f%2FNCCaT9G%2FByWy6LkMB5PKf0OKDmaxKyzmijcnnq%2BE07X%2BFRFk7vUben9uL%2BJgOSvfwAC7D9A50Y3EQKkgofGhZ9LCyAeaxqjo9zIV9w3ns2RlAenKUUIG3tTZlazYhDQW7%2BEonj3QQDi33I78MCmoG%2Btq1aeMVvAv0GJx0PLV1G4%3D
  • 2015/9/6 6:19:17   支持(15)反对(3) 回复
  • 2.nano
  • 这都什么文章啊, 基本的概念都没搞清楚就敢写, "最可靠的方式莫过于使用公钥加密算法加密,使用HTTPS协议的网站在整个传输过程中都使用了这个技术" HTTPS整个过程都公钥加密你确定?
    去看看SSL协议有那么麻烦吗? SSL是用到了公钥加密, 可是仅限于连接建立阶段, 用于交换服务器和浏览器间的对称加密算法和密钥. 简单的说, 浏览器和服务器协商好一个对称加密算法(比如RSA), 然后浏览器生成一个一次性的RSA密钥, 将RSA密钥使用服务器的公钥加密后发送给服务器, 然后双方就使用这个密钥用RSA加密传输了.
    要研究这个, 先把基本概念搞清楚.
  • 2015/9/13 18:39:02   支持(7)反对(3) 回复
  • 3.sb
  • 当年某国内电子邮箱妄图用JavaScript做RSA加密被MITM攻击
    williamlong.info/archives/3658.html
  • 2015/9/6 12:45:06   支持(5)反对(4) 回复
  • 4.ZSFH
  • HTTPS不止是加密,其实还附带验证身份的功能
    根证书就是为了这个存在的
    而HTTP明文交换公钥是很容易被直接替换的

    以及并不推荐全部用RSA加密,性能实在……
    都是用RSA商定一个对称加密的密钥然后加密的
  • 2015/9/19 1:04:52   支持(2)反对(1) 回复
  • 5.lehui99
  • 毛用都没有!
    电信级的RSA加密后的密码的破解方法: williamlong.info/archives/3658.html
    多梦 于 2015/9/6 17:20:08 回复
    要是你用的网络都不安全,那还谈什么安全,HTTPS一样有中间人攻击。
  • 2015/9/5 23:44:25   支持(4)反对(4) 回复
  • 6.change
  • git.oschina。net/352926/Javascript-to-PHP-RSA-Decode-Encode
    拿走不谢
  • 2015/9/17 12:08:48   支持(1)反对(3) 回复

发表评论:

 请勿发送垃圾信息、广告、推广信息或链接,这样的信息将会被直接删除。

订阅博客

  • 订阅我的博客:订阅我的博客
  • 关注新浪微博:关注新浪微博
  • 关注腾讯微博:关注腾讯微博
  • 关注认证空间:关注QQ空间
  • 通过电子邮件订阅
  • 通过QQ邮件订阅

站内搜索

热文排行


月度排行

本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.
This site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License.