以前看javascript产生一点想法,对脚本加密。

其实客户端脚本加密没有多大意义,他一般不会涉及到数据的提交处理,也不会与服务器产生数据传输,但是对于服务器脚本,那就可能有必要了。在我们使用的语言当中,像javascript,vbscript的语言让我了解到另外的一种语言执行方式,就是他们是解释性语言,他们与。net中的c#,vb不一样,他们学要编译。

解释性语言让我觉得他和文本没有多大区别,他们好像是融为一体的,其实在执行前他们就是文本,所以你可以像操作字符串那样来操作他们,只要当他们在执行的时候变换到原来你想要执行的程序形式就行了,在此之前你可以将它们变化到你想要的任何字符形式。

举个很简单的列子:如一句alert('hello');

你写的js脚本原来是

<script>
alert('hello');
</script>

你不想让别人知道你的程序是什么样子的,给他变一下行那么你可以写成

<script>
var s='<script>alert("hello")</';
document.write(s);
document.write('script>');
</script>

这样看起来似乎是多余的,只是步骤麻烦了点但是再换一下就不一样了

假设有个加密程序f(var s)和解密程序f-1(var s)

事先你可以将上面的

var s='<script>alert("hello")</';

先给他f(s)

s就是你加密好的密文,上面的程序只需要写成

<script>
var s_1=f-1(s);
document.write(s);
document.write('script>');
</script>

这样你原来的程序想做的事情,别人就不知道了

但是你的f_1()程序别人可以研究甚至不用研究直接写一个

var str=f_1(s)

然后这个str就是你的程序,所以看起来加密的程序,实际上并没有加密,那么你就可以应用另外的手段来处理,首先可能想到的是多重加密将那个f_1也加密了,然后再解密,但是无论你加密多少次都有最终一个解密函数是没有被加密,别人只有执行逆过程无论加密多少次最后还是很容易的被解密,那么你就可以使用其他的一些手段,比如你要解密的函数设置密钥并且放置在一个dll里面,这样是不是好的多了,虽然这样还是可以破解,但是对于你原来的程序来说,他的影身效果好的多了

本文想法出去突然产生希望有经验的给予指正和更多的补充