Cython编译python为so 代码加密

1. 编译出来的so比网上流传的其他方法小很多。

2. language_level  是python的主版本号,如果python版本是2.x,目前的版本Cython需要人工指定language_level.

3. python setup.py build_ext --inplace  执行脚本

4. 以下是代码片段

from distutils.core import Extension, setup

from Cython.Build import cythonize
from Cython.Compiler import Options


# __file__ 含有魔术变量的应当排除,Cython虽有个编译参数,但只能设置静态。
exclude_so = ['__init__.py', "mixins.py"]
sources = ['core', 'libs']


extensions = []
for source in sources:
    for dirpath, foldernames, filenames in os.walk(source):
        for filename in filter(lambda x: re.match(r'.*[.]py$', x), filenames):
            file_path = os.path.join(dirpath, filename)
            if filename not in exclude_so:
                extensions.append(
                        Extension(file_path[:-3].replace('/', '.'), [file_path], extra_compile_args = ["-Os", "-g0"],
                                  extra_link_args = ["-Wl,--strip-all"]))


Options.docstrings = False
compiler_directives = {'optimize.unpack_method_calls': False}
setup(  
        # cythonize的exclude全路径匹配,不灵活,不如在上一步排除。
        ext_modules = cythonize(extensions, exclude = None, nthreads = 20, quiet = True, build_dir = './build',
                                language_level = 2 或者3 , compiler_directives = compiler_directives))

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python代码可以被编译成字节码文件,这可以让代码更难以阅读和修改,但是并不是真正的加密。如果你需要加密Python代码,你可以使用以下工具: 1. PyArmor:PyArmor是一个开源工具,可以将Python代码加密和混淆,以保护代码的知识产权。它使用自定义的加密算法,可以在Python解释器中运行加密代码。 2. PyObfuscate:PyObfuscate是另一个开源工具,可以将Python代码混淆,使得代码更难以理解和分析。它使用多种技术,包括变量重命名、控制流混淆和代码替换等。 3. CythonCython是一个Python的静态类型扩展,它可以将Python代码编译成C代码,并生成可执行文件。这可以使Python代码更加难以逆向工程,但是也需要更多的时间和资源来完成。 请注意,尽管这些工具可以使代码更难以阅读和修改,但它们并不能完全保护代码的安全性。如果你需要真正的安全保障,建议采用其他安全措施,例如访问控制、加密存储等。 ### 回答2: 对Python代码进行加密可以采取以下几种方式: 1. 混淆代码:通过改变变量名、函数名和类名等,使代码变得难以理解。可以使用工具如Pyminifier、PyObfuscate等来进行代码混淆。 2. 字符串加密:对代码中的字符串进行加密,使得代码中的关键信息难以被直接读取。可以使用加密算法如Base64、AES等对字符串进行加密,然后在代码中进行解密。 3. 字节码加密:将Python代码转换为字节码,以实现对代码的保护。可以使用工具如py2exe、py2app等将源代码转换为可执行文件,使代码难以被反编译。 4. 特殊模块加密:将敏感的部分代码封装在特殊的加密模块中,只向特定用户提供解密密钥。通过这种方式,即使代码被获取,也无法正常运行。 5. 密钥加密:使用密钥对代码进行加密,只有拥有正确密钥的用户才能解密并执行代码。可以使用工具如PyCryptodome等进行对称或非对称加密。 需要注意的是,虽然可以采取各种方式对Python代码进行加密,但绝对的安全是不存在的。加密只能提高代码的安全性,但不可能完全抵御攻击。因此,在编写代码时,应注意遵循安全的编程实践,避免在代码中存储敏感信息,并定期对代码进行审核和更新,以保证代码的安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值