Base64 加密后运行 JavaScript 代码

Posted

技术标签:

【中文标题】Base64 加密后运行 JavaScript 代码【英文标题】:Run JavaScript Code after Base64 encryption 【发布时间】:2013-03-28 20:38:36 【问题描述】:

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

如何实现,加密后的代码将被解密并开始运行函数?

提前感谢您! :)

【问题讨论】:

这取决于您的代码。另请注意,Base64 不是加密。你为什么要这样做? 您好,感谢您的快速回复。我这样做是因为我想保护我的 JavaScript 代码不受其他人的影响。我知道,没有办法保护它免受每个人的侵害,但我希望它受到保护,免受初学者的侵害。对不起我的英语不好:) 所以你想“保护”你的代码免受那些可能对 JS 一无所知的人的攻击......老实说,不要这样做,以免麻烦。 加密为 base64 字符串对于可共享性或当您想要创建书签时非常有意义(代码从网络地址栏 javascript:eval(atob('...')) 运行,但请记住,它不提供任何安全性。 【参考方案1】:

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

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

eval(decode64('YWxlcnQlMjglMjJ0ZXN0JTIyJTI5JTNC'));

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

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

【讨论】:

@Qwerty:这不是内置函数。使用 OP 链接到的代码。 对.. 但它确实做了内置函数 btoa()atob() 对吗? @Qwerty:是的,但并非所有浏览器都提供这些功能。 IE 直到版本 10 才拥有它们。【参考方案2】:

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

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

但是,请记住,它不提供任何安全性。但这并不意味着没有用例。加密为 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(),但是..

    使用 polyfil 并教给浏览器这些功能。 link 另辟蹊径

【讨论】:

【参考方案3】:

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

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

http://marijnhaverbeke.nl/uglifyjs

【讨论】:

以上是关于Base64 加密后运行 JavaScript 代码的主要内容,如果未能解决你的问题,请参考以下文章

Javascript实现base64的加密解密

javascript是否自带了base64加密、解密函数?是啥?

javascript是否自带了base64加密、解密函数?是啥?

JavaScript base64 加密解密

RSA加密后做Base64编码

BASE64Encoder,BASE64Decoder加密后再解密不成功