掌桥专利:专业的专利平台
掌桥专利
首页

一种PHP源代码加密方法

文献发布时间:2023-06-19 11:52:33


一种PHP源代码加密方法

技术领域

本发明涉及PHP源代码加密领域,特别是涉及一种PHP源代码加密方法。

背景技术

PHP是解释性语言,源代码是开放的,很多软件公司的开发的商业软件使用PHP语言开发,源代码暴露在外,很容易被复制,源代码得不到有效保护。

传统的PHP源代码加密方法,如图1所示,是使用Zend公司的Zend Guard工具把PHP源代码文件编译成不可读的字节码,需要在web服务器(如apache)安装额外的第三方ZendGuard Loader扩展插件才能运行,而且不同操作系统,不同PHP版本需要对应编译不同版本的插件,安装编译很麻烦,并且不能热部署,需要重启web服务器,软件安装实施难度较大。

此外,在成本方面,传统的Zend Guard加密方法,被美国的Zend公司垄断,每年收费高达600美金,费用高昂,大大增加软件公司和客户的成本。

除了Zend公司的PHP源代码加密方法,国内其他的同类专利号:201310739718.8,专利名称:一种对核心源代码进行加密的方法及装置,需要在web服务器(例如apache)安装额外的第三方,不同操作系统,不同的PHP版本都需要重新编译安装,安装部署非常麻烦,很多虚拟主机厂家的web服务器不支持,导致加密后的程序无法运行。

发明内容

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种PHP源代码加密方法,利用PHP自身解码器实现PHP源代码的加密,无需单独的加密工具,直接在web服务器上运行,无需第三方插件。

本发明提供一种PHP源代码加密方法,所述方法包括以下步骤:

步骤1:载入PHP源代码文件,并且对PHP源代码文件进行utf-8编码;

步骤2:利用PHP自身解释器读取utf-8编码的PHP源代码文件;

步骤3:通过SHA256加密算法,依据用户唯一的SESSION ID创建256位私锁文件;并且读取PHP源代码文件的要素;

步骤4:根据256位私锁文件生成256位随机字符,逐一替换PHP源代码文件的要素;

步骤5:使用BASE64B编码PHP源代码文件的字符串,并且引入eval()函数重新整合字符串后输出PHP源代码加密文件,替换原有PHP源代码文件。

于本发明的一实施例中,所述PHP源代码文件的要素包括PHP源代码文件的常量、变量、函数、类。

于本发明的一实施例中,所述PHP源代码文件是通过载入web服务器进行加密,当PHP源代码文件加密后,通过重启web服务器,直接运行PHP源代码加密文件。

于本发明的一实施例中,如果步骤5中使用BASE64B编码PHP源代码文件的字符串失败,则返回步骤1,重新对PHP源代码文件进行utf-8编码。

于本发明的一实施例中,如果步骤5中引入eval()函数重新整合字符串失败,则返回步骤1,重新对PHP源代码文件进行utf-8编码。

如上所述,本发明的一种PHP源代码加密方法,具有以下有益效果:本发明利用PHP自身解释器强大的字符处理能力和eval()函数执行字符串表达式的能力,对PHP源代码文件的常量、变量、函数、类,进行二次分解并随机替换,结合SHA256位私锁文件,让PHP源代码文件生成随机字符,PHP源代码加密文件是一堆人没有规律的字符串,程序员无法阅读,但是PHP自身解释器可以顺利编译成字节码,并执行解释器输出结果;加密的PHP源代码文件可以直接在web服务器上运行,无需第三方插件,跨平台,全面兼容Windows/Linux系统,运行效率和未加密PHP源代码文件类似,更新PHP源代码文件也无需停止web服务器,直接覆盖即可,加密速度快,可批量加密多个PHP源代码文件。

附图说明

图1显示为现有技术中公开的传统的PHP源代码加密方法的流程图。

图2显示为本发明实施例中公开的PHP源代码加密方法的整体流程图。

图3显示为本发明实施例中公开的PHP源代码加密方法的步骤流程图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。

需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

如图2-图3所示,本发明提供一种PHP源代码加密方法,所述方法包括以下步骤:

步骤1:载入PHP源代码文件,并且对PHP源代码文件进行utf-8编码;

步骤2:利用PHP自身解释器读取utf-8编码的PHP源代码文件;

步骤3:通过SHA256加密算法,依据用户唯一的SESSION ID创建256位私锁文件;并且读取PHP源代码文件的要素;

步骤4:根据256位私锁文件生成256位随机字符,逐一替换PHP源代码文件的要素;

步骤5:使用BASE64B编码PHP源代码文件的字符串,并且引入eval()函数重新整合字符串后输出PHP源代码加密文件,替换原有PHP源代码文件。

如果使用BASE64B编码PHP源代码文件的字符串失败,则返回步骤1,重新对PHP源代码文件进行utf-8编码;如果中引入eval()函数重新整合字符串失败,则返回步骤1,重新对PHP源代码文件进行utf-8编码。

具体的,所述PHP源代码文件是通过载入web服务器进行加密,当PHP源代码文件加密后,通过重启web服务器,直接运行PHP源代码加密文件。

综上所述,本发明利用PHP自身解释器强大的字符处理能力和eval()函数执行字符串表达式的能力,对PHP源代码文件的常量、变量、函数、类,进行二次分解并随机替换,结合SHA256位私锁文件,让PHP源代码文件生成随机字符,PHP源代码加密文件是一堆人没有规律的字符串,程序员无法阅读,但是PHP自身解释器可以顺利编译成字节码,并执行解释器输出结果;加密的PHP源代码文件可以直接在web服务器上运行,无需第三方插件,跨平台,全面兼容Windows/Linux系统,运行效率和未加密PHP源代码文件类似,更新PHP源代码文件也无需停止web服务器,直接覆盖即可,加密速度快,可批量加密多个PHP源代码文件;然而,Zend Guard加密方法则需要在web服务器安装ZendGuardLoader扩展文件,不同操作系统,不同版本都需要重新编译,低版本不兼容高版本,并且需要重启web服务器。所以,本发明有效克服了现有技术中的种种缺点而具高度产业利用价值。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

相关技术
  • 一种PHP源代码加密方法
  • 一种源代码保护系统及源代码加密方法
技术分类

06120113084542