Loading...

    AD: 猛买 | 快递查询 | Jobsdigg | 很棒的男装店

元旦小礼物 – 加密的大波

可任意转载,但必须在醒目位置以超链接形式标明文章原始出处和作者信息
原文地址:http://www.blogkid.net/archives/2642.html

上周霍炬做了一个php和js两端做rsa加解密的demo,昨天我和杜欢讨论了一下,他建议其实不一定要用RSA,即使用对称加密也把key暴露出来,只要运算量够大,就可以达到目的。

顺着这思路,我实现了一个更简单的加解密,把所有要输出的内容,在服务器端按位异或,然后在js中再异或回来。这么做运算量还太小,但由于PHP中ob_start() 函数是stackable的,上述的加解密过程可以嵌套多层:解开一层js,发现其中还是一层js。估计尝试解密并过滤的兄弟,一定会很崩溃的。

我顺便做了一个dabr修改版,即可支持自定义层次的加密,解密的过程会在浏览器自动进行。演示地址:http://1fuck63.com/ 。尝试查看一下网页源代码,只有一行,任何可读的字符都没有留下。

我测试时,使用两层的加密,在firefox解密的时间就超过了100ms,在IE6中超过了300ms。使用三层时,已经慢得不得了了(因为每次加密都会导致内容的长度暴涨)。

此修改版的下载地址在:http://1fuck63.com/dabr.tar.gz ,如果大家不放心,可仅替换index.php, common/theme.php这两个文件, 并在根目录下增加jsencode.php。在jsencode.php中,第二行 define(‘ENCODE_DEPTH’, x); 定义了使用几层加密。设为2已经足够了。解密时引用了霍炬脚本中的一个函数,望莫怪。

祝大家元旦快乐。

UPDATE: 看到有朋友留言,说不带这么折腾dabr的,因为大家多数是用手机上的。其实这种加密方式可以用在任何系统里面,只要引入了压缩包中的jsencode.php文件,很容易就可以改造出一个加密版的wordpress。

HicroKee

16 Responses to “元旦小礼物 – 加密的大波”


  1. 博主你好, 我们撞车了呵呵. 我最开始也想了层数, 后来我发现其实1层就够了.
    https://twitter.com/xmms2_mac/statuses/7110654195

  2. 2jkfzero

    有点问题,出现了N个我没有follow的人的tweet,但是我用twitter中文圈看就没有。

  3. Google浏览器下面无法回复~

  4. @jkfzero
    奇怪,我这里好好地啊,一切正常

  5. 下载去玩玩 :razz: 新年快乐

  6. 我个人觉得要安全的话还是用HTTPS
    真要搞其实一层也够。

    其实DABR最常用还是在手机上,手机的浏览器可经不起这么搞

  7. @HicroKee
    没错,手机上很容易就把浏览器搞死了 :D
    只是这种加密的方式,不仅可用于dabr

  8. HTTP层加密的话,有个PHPRPC库使用TEA算法实现非对称算法加密,比RSA加密级别还高,有兴趣可调研下;

    Dabr主要还是给移动设备用,js性能一般不好,其实只要做下base64转换已经能够避免关键词审查了

  9. @BOYPT
    base64运算量未免太小吧,gfw可是连gzip都支持的

  10. 支持下!

  11. 技术文章啊

  12. 真是道高一尺,魔高一丈啊

  13. 没啥惊喜呀~~~

  14. 霍炬,我是霍炬粉丝……

  1. [...] 但是使用的感觉却令我很是不快,主要是打开墙外链接时候,经常会出现撞墙的情况,然后又得等个几分钟才能继续用。我猜测应该是加密措施做得不好,于是我就期望能加密Dabr。找到了张磊的这篇文章和霍炬的这篇。两个都是推上的名人了,研究了一下他们两人的方法,俩人的思路都一样,服务器端php加密,然后浏览器js解密。霍炬用的是rsa加密,优点是加密效果好,但是实现起来效率不够高。张磊直接用多层按位异或,这样可能效率略微好点(猜测,也没测试),但是文件的大小就不敢恭维了,我仅仅用了1层加密一个网页就有300KB+了(因为电脑上未压缩,用OPM或者UC可能会好点),我的移动EDGE受不了这样的流量,而且排版也有一定的错位,作罢。 [...]

  2. [...] 但是使用的感觉却令我很是不快,主要是打开墙外链接时候,经常会出现撞墙的情况,然后又得等个几分钟才能继续用。我猜测应该是加密措施做得不好,于是我就期望能加密Dabr。找到了张磊的这篇文章和霍炬的这篇。两个都是推上的名人了,研究了一下他们两人的方法,俩人的思路都一样,服务器端php加密,然后浏览器js解密。霍炬用的是rsa加密,优点是加密效果好,但是实现起来效率不够高。张磊直接用多层按位异或,这样可能效率略微好点(猜测,也没测试),但是文件的大小就不敢恭维了,我仅仅用了1层加密一个网页就有300KB+了(因为电脑上未压缩,用OPM或者UC可能会好点),我的移动EDGE受不了这样的流量,而且排版也有一定的错位,作罢。 [...]

Leave a Reply