python编译为pyd文件实现代码保密

1、安装cython

2、官网下载安装Visual Studio 2019,选择Desktop development with C++,勾上MSVC、win10SDK、c++ profiling tool、c++ cmake、c++ atl,安装后重启系统

3、项目中增加一个py脚本build.py

from distutils.core import setup
from Cython.Build import cythonize
from distutils.extension import Extension

def main():
    # 这里为文件名 可以增加多个Extension('  ', ['  ']),每组的名字必须和py名一致
    extensions = [Extension('utils', ['utils.py'])]
    setup(ext_modules=cythonize(extensions))

if __name__ == '__main__':
    main()

4、cmd下cd到项目文件夹下,python build.py build_ext,即可在build/lib下找到pyd文件,放到项目文件夹下,移走原来的py文件即可

pyd文件不可直接执行,但可以被其他python调用,pyd仅能在相同版本的windows python上运行(3.6.*通用,3.7.*通用)

 

pyd编译后字符串仍然存在,需要混淆字符串后才能隐藏密码等信息,以下为一种可用的示例代码

# 输入一段字符串,返回一个python函数,该函数返回的结果是原来的字符串
# 混淆后编译为pyd,可以隐藏密码等信息
import random
def dance(target):
    blueprint='''
def getString():
    target=''
%s
    return target
'''
    list=[]
    def parse(x):
        flag=random.randint(0,2)
        if flag==0:
            return '    target+=\'%s\''%x
        elif flag==1:
            return '    target=target+chr(%s)'%ord(x)
        elif flag==2:
            k=random.randint(0,15)
            return '    target=target+chr(%s-%s)'%(ord(x)+k,k)

    for x in target:
        list.append(parse(x))
    rs=blueprint%('\n'.join(list))
    print(rs)
    return rs

target="meJyunDd@19"
rs=dance(target)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值