3

我已经使用 base64 方法加密了我的 JavaScript 代码,如下所示。但是当我使用 document.ready 运行编码函数时,JavaScript 函数并没有做它应该做的事情。

我如何意识到加密的代码将被解密并开始运行该功能?

先感谢您!:)

4

3 回答 3

6

只需eval在解码的字符串上使用。

使用代码的示例alert("test");

eval(decode64('YWxlcnQlMjglMjJ0ZXN0JTIyJTI5JTNC'));

演示:http: //jsfiddle.net/uFxnz/

注意:使用该eval函数与不安全和低效的代码相关联,但在这种情况下,您可以尽可能多地控制代码的来源,因此它只是按照您的意愿行事。

于 2013-04-06T12:33:26.813 回答
1

要“保护”您的代码...

..您可以使用以下简单程序。

但是,请记住,它不提供任何安全性。但这并不意味着没有用例。加密为 base64 字符串对于可共享性或当您想要创建时非常有意义,例如小书签(从网络地址栏运行的代码javascript:eval(atob('...'))


现在,假设这是您的代码:

1. 守则

// commentary, Yaaay!
var myObj = {
    foo : function() { alert("Baz!")} ,
    html : "<div id='myDIV'></div>", // it's ["'] proof
    bar : 123 
};
myObj.foo();

2.base64字符串

1. var base64Fun = btoa((function(){
2. // commentary, Yaaay!
3. var myObj = {
4.     foo : function() { alert("Baz!")} ,
5.     html : "<div id='myDIV'></div>", // it's ["'] proof
6.     bar : 123 
7. };
8. myObj.foo();
9. }).toString().slice(13,-2))

请注意,我只添加了行19,其余的是您的代码,完好无损。

3.运行它

eval(atob(base64Fun));

eval(atob("Ly8gY29tbWVudGFyeQp2YXIgbXlPYmogPSB7Cglmb28gOiBmdW5jdGlvbigpIHsgYWxlcnQoIkJheiEiKX0gLAoJaHRtbCA6ICI8ZGl2IGlkPSdteURJVic+PC9kaXY+IiwKCWJhciA6IDEyMyAKfTsKbXlPYmouZm9vKCk7"));

兼容性

btoa()并且atob()并非所有浏览器都支持,但是..

  1. 使用 polyfil 并教浏览器这些功能。关联
  2. 找到另一种方式
于 2014-05-03T17:42:50.103 回答
0

您不能通过 base64 转换器运行您的 JS 代码并期望它能够正常工作。

您正在寻找的是一个缩小器。像uglifyjs:

http://marijnhaverbeke.nl/uglifyjs

于 2013-04-06T12:15:51.663 回答