月光博客 » 网站建设 » HTTP使用RSA公钥加密算法加密明文

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

  来源:投稿,原文链接

顶一下 ▲()   踩一下 ▼()

相关文章

  1. 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
    支持(20反对(4回复
  1. 2
    nano   说道:
    这都什么文章啊, 基本的概念都没搞清楚就敢写, "最可靠的方式莫过于使用公钥加密算法加密,使用HTTPS协议的网站在整个传输过程中都使用了这个技术" HTTPS整个过程都公钥加密你确定?
    去看看SSL协议有那么麻烦吗? SSL是用到了公钥加密, 可是仅限于连接建立阶段, 用于交换服务器和浏览器间的对称加密算法和密钥. 简单的说, 浏览器和服务器协商好一个对称加密算法(比如RSA), 然后浏览器生成一个一次性的RSA密钥, 将RSA密钥使用服务器的公钥加密后发送给服务器, 然后双方就使用这个密钥用RSA加密传输了.
    要研究这个, 先把基本概念搞清楚.
    支持(11反对(3回复
  1. 3
    sb   说道:
    当年某国内电子邮箱妄图用JavaScript做RSA加密被MITM攻击
    williamlong.info/archives/3658.html
    支持(6反对(4回复
  1. 4
    lehui99   说道:
    毛用都没有!
    电信级的RSA加密后的密码的破解方法: williamlong.info/archives/3658.html
    多梦 于 2015/9/6 17:20:08 回复
    要是你用的网络都不安全,那还谈什么安全,HTTPS一样有中间人攻击。
    支持(5反对(4回复
  1. 5
    ZSFH   说道:
    HTTPS不止是加密,其实还附带验证身份的功能
    根证书就是为了这个存在的
    而HTTP明文交换公钥是很容易被直接替换的

    以及并不推荐全部用RSA加密,性能实在……
    都是用RSA商定一个对称加密的密钥然后加密的
    支持(2反对(1回复
  1. 6
    change   说道:
    git.oschina。net/352926/Javascript-to-PHP-RSA-Decode-Encode
    拿走不谢
    支持(1反对(3回复

发表留言