2012-11-13 111 views
2

这里的eval是一些代码,我最近看到:编译和BASE64字符串

import base64 

code="CmltcG9ydCBweW1vbmdvCmltcQ" #very long 
eval(compile(base64.b64decode(code), "<string>", 'exec')) 

我知道它做什么,这是非常对它进行解码。但我对自己如何做到好奇。因此,如果我有一个应用程序,并且我想对它进行编码并使其通过代码运行,那么应该如何编码以获取base64字符串呢?

+0

只是好奇,有什么用呢?我能想到的唯一一个东东蛋。 – bereal

+0

@bereal:为了防止人们“窃取”它或者在其中发现安全漏洞而对其进行混淆的错误尝试是想要这样做的最常见原因。非常无效和误导。 –

回答

4

您编码字符串中包含有效的Python代码:

import base64 

source = '''\ 
print('Hello World!') 
print('Not sure why you'd ever do this though..') 
''' 
code = base64.b64encode(source) 
+1

此外,source.encode('base64')会工作(然后不需要导入任何东西) – bereal

+0

@bereal:是的,只是提供与原来的对称。 –