美文网首页Python学习
苦心研究python非在线软件授权认证,教你如何保护自己的知识产

苦心研究python非在线软件授权认证,教你如何保护自己的知识产

作者: 星星课 | 来源:发表于2019-07-23 14:56 被阅读0次

    用python编写出来的程序可以通过pyinstaller打包成exe可执行文件,从而广泛的发布和分享,程序往往是我们花费很大心血写出来的,具有一定的商用价值,那么如何保护自己的知识产权呢?无非就是在使用前加上授权验证,通过就运行,不通过就退出程序,验证分为在线和离线两种,本篇文章介绍的是离线授权验证,这种验证的好处是不用再额外花钱买服务器了,也比较简单。

    首先说下我个人对离线授权的理解:软件不需要从服务器获得授权信息,只需要检查本地文件即可确定使用者是否被授权。

    接下来我们先说下基本思想:1.客户端生成待授权的文件;2.使用者将待授权文件发送给软件作者;3.软件作者对待授权文件进行授权;4.软件作者将已授权的文件发送给使用者;5.使用者可以正常使用软件。

    那么,今天我们先来说所第一步:如何生成待授权文件

    如图:

    代码及注释在下边:


    import base64

    import hashlib

    import datetime

    import wmi

    from os import getcwd

    def create_register_file():

    lianjie_fuhao=“woshilianjiefuhao”

    #获得主板序列号

    bios_num = wmi.WMI().Win32_BaseBoard()[0].SerialNumber.strip()

    #获取当前时间字符串

    cur_time = datetime.datetime.now().strftime('%Y-%m-%d')

    #填充最原始的字符串(流程图的第二步)

    t_str = '{}>>{cur_time}>>{cur_time}>>{cur_time}'.format(

    bios_num, cur_time=cur_time)

    #先按照utg-8的编码类型编码为二进制

    content = t_str.encode('utf-8')

    #生成base64字符串(第3步的前半部分)

    content = base64.b64encode(content)

    #计算base64字串的MD5值(第3步的后半部分)

    b64_str = content.decode('utf-8')

    md5 = hashlib.md5()

    md5.update(content)

    md5_str = md5.hexdigest()

    #将base64字串通过连接符号和MD5字串进行拼接(连接符号随便定义都行,目的是

    #为了防止被人太顺利的破解我们加密方法)

    content = '{}{}{}'.format(b64_str, lianjie_fuhao, md5_str)

    #再次进行base64编码

    content = content.encode('utf-8')

    content = base64.b64encode(content)

    #写入到程序目录下

    baocun_lujing="{}\\授权文件.txt".format(getcwd())

    with open(baocun_lujing, 'wb') as f:

    f.write(content)

    if __name__ == "__main__":

    #创建待授权文件

    create_register_file()

    print("待授权文件已创建")


    至此,我们的包含待授权电脑、日期文件就被我们生成了,下一步就是对待授权文件进行授权,我们随后再说。(第一次在简书写文章,不知道怎么插入代码了,先这样凑活着看吧。。。。)


    我的头条账号:跟我一起学python

    相关文章

      网友评论

        本文标题:苦心研究python非在线软件授权认证,教你如何保护自己的知识产

        本文链接:https://www.haomeiwen.com/subject/aeoolctx.html