一份相同的JavaScript代码,进行多次混淆加密,能得到不同的结果吗?

答案是肯定的,能。

JShaman可以实现这个效果。即:加密结果具有多态性、变化性。

下面实测展示。

来到JShaman网站,用它默认的示例代码做测试,如下图所示。

打开网易新闻 查看更多图片

配置也使用默认的,如下图所示。

打开网易新闻 查看更多图片

然后进行混淆加密。第一次得到的加密代码如下图。

打开网易新闻 查看更多图片

打开浏览器的开发者工具,在控制台中,将上面的代码用alert的方式显示其代码长度。

代码:alert(`加密后的JS代码`.length + " bytes");

显示如下图,代码长度显示为2898字节。

打开网易新闻 查看更多图片

再混淆一次,又一次得新结果,这次是2817字节,如下图:

打开网易新闻 查看更多图片

再试,又得到3000字节,如下图:

打开网易新闻 查看更多图片

由此可见,同一段JavaScript代码用JShaman混淆加密,会得到不同的新JavaScript加密代码。

这种不同结果的意义是什么呢?

它体现了JavaScript混淆加密的保护强度,多态的结果表明混淆过程中使用了不同的加密算法,所以才生成了不同的加密代码。