CN117874718A - 一种离线产品许可证生成和验证方法 - Google Patents
一种离线产品许可证生成和验证方法 Download PDFInfo
- Publication number
- CN117874718A CN117874718A CN202410021973.7A CN202410021973A CN117874718A CN 117874718 A CN117874718 A CN 117874718A CN 202410021973 A CN202410021973 A CN 202410021973A CN 117874718 A CN117874718 A CN 117874718A
- Authority
- CN
- China
- Prior art keywords
- sub
- string
- encryption
- key
- character string
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 238000012795 verification Methods 0.000 title claims description 10
- 238000012163 sequencing technique Methods 0.000 claims abstract description 4
- 238000013475 authorization Methods 0.000 claims description 13
- 238000000926 separation method Methods 0.000 claims description 8
- 238000005336 cracking Methods 0.000 abstract description 8
- 230000002708 enhancing effect Effects 0.000 abstract description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/105—Arrangements for software license management or administration, e.g. for managing licenses at corporate level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供了一种离线产品许可证生成方法,涉及许可证颁发技术领域,目的是加许可证的破解难度,进而加强其安全性,包括以下步骤:获得第一字符串;将第一字符串分割为n段子字符串,获取顺序编码;将n段子字符串进行随机排序,获得第二字符串;生成加密方法池赋予加密编码号;为每段子字符串随机选取加密方法进行加密,获得子编码信息串;根据子编码信息串、子密钥和子加密串获取第一密钥、第二密钥和乱序加密串;将第一密钥、第二密钥和乱序加密串放入产品许可证模板文件中作为许可证进行颁发。本发明具有提升许可证破解难度、增强安全性和可靠性的优点。
Description
技术领域
本发明涉及许可证颁发技术领域,具体而言,涉及一种离线产品许可证生成和验证方法。
背景技术
离线许可证是一种软件许可证类型,允许用户在没有持续连接互联网的情况下使用软件。它适用于那些需要在没有网络连接的环境中进行操作或访问的软件。
一般来说,在联网的环境中,用户首先通过特定的授权方式向软件供应商请求离线许可证;软件供应商生成一个离线许可证文件,其中包含了用户的许可信息和使用权限;用户将该离线许可证文件部署到离线环境中的目标设备上,例如将其复制到无网络连接的计算机上;在离线环境中,软件会读取并验证离线许可证文件,确认用户的许可有效性。离线许可证也存在容易被破解的缺点,如果被破解,会导致盗版和未授权使用、重要数据和资料泄露、恶意软件和病毒传播等危险情况发生。
因此,需要对许可证的生成进行优化,加大其破解难度,进而加强其安全性。
发明内容
本发明的目的在于提供一种离线产品许可证生成和验证方法,其可以加大其破解难度,进而加强其安全性。
本发明的实施例通过以下技术方案实现:
本发明首先提供一种离线产品许可证生成方法,包括以下步骤:
获取CPU型号码、硬盘uuid码、产品序列号,并依次序进行拼接,获得第一字符串;
根据所述第一字符串的长度将所述第一字符串分割为n段子字符串,并顺次为每段字符串编号,获取顺序编码;
将n段子字符串进行随机排序,获得第二字符串;
生成加密方法池,加密方法池中包括m种加密方法,为每种所述加密方法赋予一个加密编码号;
为每段所述子字符串随机从所述加密方法池中选取一种加密方法进行加密得到子加密串和子密钥串,并获取对应的加密编码号,并将子字符串的字符数、加密编码号拼接在该子字符串的顺序编码后,获得子编码信息串;
根据所述子编码信息串、所述子密钥和所述子加密串获取第一密钥、第二密钥和乱序加密串;
将第一密钥、第二密钥和乱序加密串放入产品许可证模板文件中作为许可证进行颁发。
优选地,根据所述子编码信息串、所述子密钥和所述子加密串获取第一密钥、第二密钥和乱序加密串的方法为:
依照第二字符串中的子字符串次序拼接所述子编码信息串,得到第一密钥;
依照第二字符串中的子字符串次序拼接所述子密钥串,子密钥串之间有分隔标识符连接,得到第二密钥;
依照第二字符串中的子字符串次序拼接所述子加密串,子加密串之间有分隔标识符连接,得到乱序加密串。
优选地,根据所述第一字符串的长度将所述第一字符串分割为n段子字符串的方法为:
获取第一长度p:
其中,A为所述第一字符串的字符总数,为向下取整运算;
获取剩余长度e:
其中,mod(.)为取除法余数的运算;
在1-n中产生一个随机数t;
获取第二长度q:
q=p+e;
所述第一字符串中的第t段子字符串的长度为第二长度q,其余子字符串的长度均为第一长度p。、
优选地,所述顺序编码采用四位数的二级制码。
优选地,所述加密编码号采用一位字母表示。
优选地,所述加密方法包括对称加密算法、非对称加密算法、加盐加密算法和哈希加密算法。
本发明还提供一种离线产品许可证验证方法,应用于以上任意一项所述的一种离线产品许可证生成方法,包括以下步骤:
读取许可证,获得第一密钥、第二密钥和乱序加密串;
根据第一密钥获取每个所述子字符串的所述子编码信息串;
根据所述子编码信息串分别获取所述第二字符串中每个子字符串的加密方法;
依据加密方法,通过所述子密钥串和对应的所述子加密串还原每个所述子字符串;
根据所述子编码信息串获取每个所述子字符串的顺序编码和字符数;
依照所述顺序编码重新对所述子字符串进行排序还原所述第一字符串;
读取当前机器的CPU型号码、硬盘uuid码、产品序列号,分别和所述第一字符串中的对应信息进行对比,若吻合则验证通过,若不吻合则验证不通过。
优选地,所述许可证中还包括许可证的授权开始时间和授权结束时间;
在进行验证的时候,还读取机器当前时间;
验证所述当前时间是否在所述授权开始时间和所述授权结束时间之间,若在则验证通过,否则验证不通过。
优选地,根据第一密钥获取每个所述子字符串的所述子编码信息串的方法为,按照所述子编码信息串的长度对所述第一密钥进行等分分段。
本发明实施例的技术方案至少具有如下优点和有益效果:
本发明通过加强许可证生成的复杂性和随机性来加强破解难度,提升了离线的许可证的安全性,进而减少非法修改软件的可能性,降低潜在的安全漏洞和恶意软件的风险;
本发明还可以降低非法分发和使用软件的风险,从而保护用户的数据和隐私安全;
本发明可以更好地保护软件开发商的版权。进而防止未经授权的复制、分发和使用软件,减少盗版行为;
本发明设计合理、基于现有算法即可实现提升破解难度,性价比高,便于实施和推广。
附图说明
图1为本发明实施例1提供的离线产品许可证生成方法的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
实施例1
本发明首先提供一种离线产品许可证生成方法,参与图1,包括以下步骤:
获取CPU型号码、硬盘uuid码、产品序列号,并依次序进行拼接,获得第一字符串;
根据所述第一字符串的长度将所述第一字符串分割为n段子字符串,并顺次为每段字符串编号,获取顺序编码;
将n段子字符串进行随机排序,获得第二字符串;
生成加密方法池,加密方法池中包括m种加密方法,为每种所述加密方法赋予一个加密编码号;
为每段所述子字符串随机从所述加密方法池中选取一种加密方法进行加密得到子加密串和子密钥串,并获取对应的加密编码号,并将子字符串的字符数、加密编码号拼接在该子字符串的顺序编码后,获得子编码信息串;
根据所述子编码信息串、所述子密钥和所述子加密串获取第一密钥、第二密钥和乱序加密串;
将第一密钥、第二密钥和乱序加密串放入产品许可证模板文件中作为许可证进行颁发。
在本实施例中,根据所述子编码信息串、所述子密钥和所述子加密串获取第一密钥、第二密钥和乱序加密串的方法为:
依照第二字符串中的子字符串次序拼接所述子编码信息串,得到第一密钥;
依照第二字符串中的子字符串次序拼接所述子密钥串,子密钥串之间有分隔标识符连接,得到第二密钥;
依照第二字符串中的子字符串次序拼接所述子加密串,子加密串之间有分隔标识符连接,得到乱序加密串
本实施例的核心在于对第一字符串进行切分然后随机排序后进行分段加密,将本身的顺序和每段的编码方式存储为第一密钥,将具体每一段的加密密钥作为第二密钥。以加密复杂化来加强破解难度,实现对离线的许可证的可靠性和安全性的提升。
实施例2
本实施例基于实施例1的技术方案,对各个字符串和密钥的获取做进一步说明。
在本实施例中,根据所述第一字符串的长度将所述第一字符串分割为n段子字符串的方法为:
获取第一长度p:
其中,A为所述第一字符串的字符总数,为向下取整运算;
获取剩余长度e:
其中,mod(.)为取除法余数的运算;
在1-n中产生一个随机数t;
获取第二长度q:
q=p+e;
所述第一字符串中的第t段子字符串的长度为第二长度q,其余子字符串的长度均为第一长度p。
在本实施例中,将无法等分的长度随机加到一个子字符串而不是固定加在某个位置的字符串,也是为了加大破解难度。以下为一个实施案例:
假设CPU型号码为A1234567、硬盘uuid码为B789012345、产品序列号为ABCDEFGHIJKL,依次拼接后的第一字符串为:A1234567B789012345ABCDEFGHIJKL,一共有30个字符。假设在本实施例中的n取4,进而可以计算得到p的值为7,e为2。此时系统自动在1-4中产生随机数3,故而可以得知,在划分的时候,第一段、第二段和第四段的子字符串的长度均为7个字符,第三段则为9个字符,所以划分的结果为:
第一段子字符串:A123456;
第二段子字符串:7B78901;
第三段子字符串:2345ABCDE;
第四段子字符串:FGHIJKL;
如此分段更具有长度随机性,同时可以避免每一段子字符串都具备完整的含义。
因为本实施例基于实施例1的技术方案,在之后的步骤中会对子字符串进行乱序排序。
作为本实施例的优选方案,所述顺序编码采用四位数的二级制码。
依照本实施例的4段分段,顺序编码依次为:0001,0010,0011,0100;
假设随机乱序后的次序为3241也就是0011,0010,0100,0001,对应的长度为9/7/7/7此时第二字符串为2345ABCDE7B78901FGHIJKLA123456;
进一步地,所述加密编码号采用一位字母表示。
此外,所述加密方法包括对称加密算法、非对称加密算法、加盐加密算法和哈希加密算法。
假设本实施例对称加密算法、非对称加密算法、加盐加密算法和哈希加密算法对应的加密编码号分别为T、P、Q和R,在对第二字符串中的子字符串依次分别进行加密时,随机方法选取的结果分别为非对称加密算法、非对称加密算法、加盐加密算法和对称加密算法,此时子编码信息串分别为:00119P,00107P,01007Q,00017T,拼接后的第一密钥即为00117P00107P01009Q00017T。而第二密钥和乱序加密串按照对应的加密方法获取即可,以上加密方法均安装对应的现有方法实施即可。
实施例3
本实施例提供一种离线产品许可证验证方法,应用于以上任意一项所述的一种离线产品许可证生成方法,包括以下步骤:
读取许可证,获得第一密钥、第二密钥和乱序加密串;
根据第一密钥获取每个所述子字符串的所述子编码信息串;
根据所述子编码信息串分别获取所述第二字符串中每个子字符串的加密方法;
依据加密方法,通过所述子密钥串和对应的所述子加密串还原每个所述子字符串,也就是还原出了第二字符串;
根据所述子编码信息串获取每个所述子字符串的顺序编码;
依照所述顺序编码重新对所述子字符串进行排序还原所述第一字符串;
读取当前机器的CPU型号码、硬盘uuid码、产品序列号,分别和所述第一字符串中的对应信息进行对比,若吻合则验证通过,若不吻合则验证不通过。
在本实施例中,所述许可证中还包括许可证的授权开始时间和授权结束时间;
在进行验证的时候,还读取机器当前时间;
验证所述当前时间是否在所述授权开始时间和所述授权结束时间之间,若在则验证通过,否则验证不通过。
进一步地,根据第一密钥获取每个所述子字符串的所述子编码信息串的方法为,按照所述子编码信息串的长度对所述第一密钥进行等分分段。
本实施例依照实施例2的案例来进行验证说明:
首先根据00117P00107P01009Q00017T进行分割,可知每一个子编码信息串为6个字符,拆分得到00119P,00107P,01007Q,00017T;
进而可以知道第二密钥对应的加密方法的加密编码号分别为P、P、Q和T,通过映射关系表可以知道对应的加密方法就是非对称加密算法、非对称加密算法、加盐加密算法和对称加密算法,所以根据第二密钥的分隔标识符连接以及乱序加密串的分隔标识符连接进行对应的、分段的、分别的解密,还原出第二字符串2345ABCDE7B78901FGHIJKLA123456;
同时,通过00117P,00107P,01009Q,00017T可以知道,第二字符串中,第一段有9个字符2345ABCDE,实际的位置应该是0011也就是3,同理可以知道第二段7B78901实际位置也是2,第三段FGHIJKL的位置为4,第四段A123456的位置为1;
按照顺序还原得到第一字符串A1234567B789012345ABCDEFGHIJKL;
得到第一字符串以后,在读取当前机器的CPU型号码、硬盘uuid码、产品序列号,分别和所述第一字符串中的对应信息进行对比的时候,可以按照预先1记载的CPU型号码、硬盘uuid码、产品序列号各自的长度再进行划分还原出这些信息,然后一一进行对比。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种离线产品许可证生成方法,其特征在于,包括以下步骤:
获取CPU型号码、硬盘uuid码、产品序列号,并依次序进行拼接,获得第一字符串;
根据所述第一字符串的长度将所述第一字符串分割为n段子字符串,并顺次为每段字符串编号,获取顺序编码;
将n段子字符串进行随机排序,获得第二字符串;
生成加密方法池,加密方法池中包括m种加密方法,为每种所述加密方法赋予一个加密编码号;
为每段所述子字符串随机从所述加密方法池中选取一种加密方法进行加密得到子加密串和子密钥串,并获取对应的加密编码号,并将子字符串的字符数、加密编码号拼接在该子字符串的顺序编码后,获得子编码信息串;
根据所述子编码信息串、所述子密钥和所述子加密串分别获取第一密钥、第二密钥和乱序加密串;
将第一密钥、第二密钥和乱序加密串放入产品许可证模板文件中作为许可证进行颁发。
2.根据权利要求1所述的一种离线产品许可证生成方法,其特征在于,根据所述子编码信息串、所述子密钥和所述子加密串获取第一密钥、第二密钥和乱序加密串的方法为:
依照第二字符串中的子字符串次序拼接所述子编码信息串,得到第一密钥;
依照第二字符串中的子字符串次序拼接所述子密钥串,子密钥串之间有分隔标识符连接,得到第二密钥;
依照第二字符串中的子字符串次序拼接所述子加密串,子加密串之间有分隔标识符连接,得到乱序加密串。
3.根据权利要求1所述的一种离线产品许可证生成方法,其特征在于,根据所述第一字符串的长度将所述第一字符串分割为n段子字符串的方法为:
获取第一长度p:
其中,A为所述第一字符串的字符总数,为向下取整运算;
获取剩余长度e:
其中,mod(.)为取除法余数的运算;
在1-n中产生一个随机数t;
获取第二长度q:
q=p+e;
所述第一字符串中的第t段子字符串的长度为第二长度q,其余子字符串的长度均为第一长度p。
4.根据权利要求1所述的一种离线产品许可证生成方法,其特征在于,所述顺序编码采用四位数的二级制码。
5.根据权利要求4所述的一种离线产品许可证生成方法,其特征在于,所述加密编码号采用一位字母表示。
6.根据权利要求1所述的一种离线产品许可证生成方法,其特征在于,所述加密方法包括对称加密算法、非对称加密算法、加盐加密算法和哈希加密算法。
7.一种离线产品许可证验证方法,应用于权利要求1-5任意一项所述的一种离线产品许可证生成方法,其特征在于,包括以下步骤:
读取许可证,获得第一密钥、第二密钥和乱序加密串;
根据第一密钥获取每个所述子字符串的所述子编码信息串;
根据所述子编码信息串分别获取所述第二字符串中每个子字符串的加密方法;
依据加密方法,通过所述子密钥串和对应的所述子加密串还原每个所述子字符串;
根据所述子编码信息串获取每个所述子字符串的顺序编码和字符数;
依照所述顺序编码重新对所述子字符串进行排序还原所述第一字符串;
读取当前机器的CPU型号码、硬盘uuid码、产品序列号,分别和所述第一字符串中的对应信息进行对比,若吻合则验证通过,若不吻合则验证不通过。
8.根据权利要求7所述的一种离线产品许可证生成方法,其特征在于,所述许可证中还包括许可证的授权开始时间和授权结束时间;
在进行验证的时候,还读取机器当前时间;
验证所述当前时间是否在所述授权开始时间和所述授权结束时间之间,若在则验证通过,否则验证不通过。
9.根据权利要求7所述的一种离线产品许可证生成方法,其特征在于,根据第一密钥获取每个所述子字符串的所述子编码信息串的方法为,按照所述子编码信息串的长度对所述第一密钥进行等分分段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410021973.7A CN117874718A (zh) | 2024-01-05 | 2024-01-05 | 一种离线产品许可证生成和验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410021973.7A CN117874718A (zh) | 2024-01-05 | 2024-01-05 | 一种离线产品许可证生成和验证方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117874718A true CN117874718A (zh) | 2024-04-12 |
Family
ID=90578637
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410021973.7A Pending CN117874718A (zh) | 2024-01-05 | 2024-01-05 | 一种离线产品许可证生成和验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117874718A (zh) |
-
2024
- 2024-01-05 CN CN202410021973.7A patent/CN117874718A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101798672B1 (ko) | 코드 불변식을 이용한 스테가노그래픽 메시징 시스템 | |
US7325141B2 (en) | Method and system for secure access | |
US9350547B2 (en) | Systems and methods for watermarking software and other media | |
CN102419804B (zh) | 具有冗余安全性的可靠的软件产品验证和激活 | |
US9602289B2 (en) | Steganographic embedding of executable code | |
US20060106729A1 (en) | Method and apparatus for restricting use of a computer program | |
EP2353251B1 (en) | Apparatus for verifying and for generating an encrypted token and methods for same | |
JP2004534333A (ja) | コンピュータネットワークにおける分散データ処理に関する統合された保護方法及びシステム | |
WO2009070339A1 (en) | System for and method of locking and unlocking a secret using a fingerprint | |
US20060212649A1 (en) | License table for software protection | |
CN110457872B (zh) | 一种Android App应用资源的隐藏加固方法 | |
CN117313165A (zh) | 一种软件机器码的生成方法 | |
CN117874718A (zh) | 一种离线产品许可证生成和验证方法 | |
CN114637985A (zh) | 一种基于多环境参数的Android应用登录伪造识别方法 | |
CN115935299A (zh) | 授权控制方法、装置、计算机设备和存储介质 | |
CN113742656A (zh) | 软件授权认证方法及装置 | |
CN111510165A (zh) | 一种基于ipp码和rs码的抗共谋数字指纹编码方法 | |
EP3881214B1 (en) | Change-tolerant method of generating an identifier for a collection of assets in a computing environment | |
KR19990079414A (ko) | 소프트웨어 보호를 위한 프로그램의 암호화 방법 및암호화된 프로그램의 실행 방법 | |
CN114756896A (zh) | 一种基于区块链技术的Javascript代码防护方法以及系统 | |
CN118245980A (zh) | 应用程序的防迁移方法、装置以及电子装置 | |
CN115935384A (zh) | 数据保护方法、系统、电子设备及计算机可读存储装置 | |
Vadivukkarasi et al. | Enhanced Authentication Method using Keyboard Pattern Based Password Generation | |
Lungu et al. | Designing software locking mechanisms against reverse engineering, using artificial neural networks | |
CA2404769A1 (en) | Method and system for secure access |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |