元旦小礼物 – 加密的大波
上周霍炬做了一个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

