一种动态网页程序代码的混淆加密方法及装置与流程

文档序号:11730931阅读:262来源:国知局
一种动态网页程序代码的混淆加密方法及装置与流程
本发明涉及互联网技术领域,尤其涉及一种直接嵌入在网页中的动态网页程序代码的混淆加密方法及装置。

背景技术:
对于一些将代码直接写在网页中,为网页提供动态页面效果的动态网页编程技术,例如JavaScript等,在构建网页时,对程序代码并没有做特殊处理,这样产品一旦发布出去,用户可以从网页源文件中直接完整地阅读通过此类技术实现的程序源代码,这给代码安全带来了一些隐患。因此需要一个对此类嵌入式的动态网页程序代码进行JavaScript加密混淆的工具增加破解和阅读代码的难度,达到保护代码安全的目的。为了增加如JavaScrip类型的动态网页程序代码的安全性,现有技术中,通常会使用一些混淆加密函数,例如escape函数,进行处理,来增加非授权用户获得代码的难度。此外,还有一些其他类型的混淆工具,例如Proguard、YUICompressor等,能够实现对变量名的混淆。但现有的对写在网页中的动态网页程序代码的混淆加密工具的混淆加密强度不够,很容易被用户破解,如使用escape混淆加密后的程序代码,只需要使用unescape函数就可还原出源程序。因此,现有混淆加密工具无法满足未来网页代码安全的需求。

技术实现要素:
有鉴于此,本发明的主要目的在于提供一种动态网页程序代码的混淆加密方法及装置,用于解决现有混淆加密工具混淆加密后的结果容易被破解的技术问题。为达到上述目的,本发明的技术方案是这样实现的:一种动态网页程序代码的混淆加密方法,该方法包括:识别待发布网页中的动态页面程序源代码中的变量、函数及字符串,对变量名、函数名和字符串进行混淆处理,其中,对变量名和函数名的混淆为不可逆混淆;将混淆后的代码作为一个完整的字符串,使用加密函数,对混淆后的代码进行加密。进一步地,所述对变量名、函数名进行混淆处理的方法为:将变量名和函数名处理为字母x加数字的形式,使通过上述混淆处理的变量名和函数名与16进制的字符串的表达形式相似。进一步地,所述对变量名、函数名进行混淆处理的方法为:将变量名和函数名处理为罗马字母“o”、“l”和数字字符“0”、“1”四个字符的随机组合。进一步地,所述对字符串的混淆方式为:将源代码中的所有字符串转换为16进制的字符串表达方式。进一步地,所述加密函数的加密方法为:对输入的字符串进行逐个字符的位移操作,在位移的基础上,同时结合加密字典,对字符进行加密。进一步地,在所述混淆和加密的基础上,进一步使用可逆混淆函数对所述混淆和加密的后的结果进行进一步地混淆。本发明还提供一种动态网页程序代码的混淆加密装置,该装置包括:第一混淆模块,用于识别待发布网页中的动态页面程序源代码中的变量、函数及字符串,对变量名、函数名和字符串进行混淆处理,其中,对变量名和函数名的混淆为不可逆混淆;加密模块,用于将经第一混淆模块混淆后的代码作为一个完整的字符串,使用加密函数,对混淆后的代码进行加密。进一步地,所述第一混淆模块对变量名、函数名进行混淆处理时,将变量名和函数名处理为字母x加数字的形式,使混淆处理后的变量名和函数名与16进制的字符串的表达形式相似。进一步地,所述第一混淆模块对变量名、函数名进行混淆处理时,将变量名和函数名处理为罗马字母“o”、“l”和数字字符“0”、“1”四个字符的随机组合。进一步地,所述第一混淆模块对所述字符串进行混淆时,将源代码中的所有字符串转换为16进制的字符串表达方式。进一步地,所述加密模块对输入的字符串进行逐个字符的位移操作,在位移的基础上,同时结合加密字典,对字符进行加密。进一步地,所述装置还包括:第二混淆模块,用于在第一混淆模块输出的混淆结果的基础上,进一步使用可逆混淆函数对所述混淆和加密的后的结果进行进一步地混淆。本发明通过采用多层混淆加密过程增加了程序的破解和还原难度,同时本发明中针对函数和变量的混淆加密是不可逆的,能给源代码最有力的保护。本发明很好的解决了现有混淆加密工具对动态网页程序代码的混淆加密结果容易被破解的技术问题,提供了动态网页代码的安全性。附图说明图1为本发明提供的动态网页程序代码的混淆加密方法流程图;图2为本发明提供的动态网页程序代码的混淆加密装置的功能模块结构示意图。具体实施方式为使本发明的目的、技术方案和优点更加清楚明白,以下举实施例并参照附图,对本发明进一步详细说明。图1为本发明提供的动态网页程序代码的混淆加密方法流程图,具体步骤如下:步骤101、读取并分析待发布网页中的动态页面程序源代码,识别所述源代码中的变量、函数及字符串,对变量名、函数名和字符串进行混淆处理,其中,对变量名和函数名的混淆为不可逆混淆;该步骤中,可根据关键字对原始代码进行分割和提取,通过正则表达式、字符关键字搜索比对判断变量(var)、函数(function)等关键字以及操作符的位置,提取出变量名和函数名。优选地,所述变量名和函数名的混淆采用如下方式之一:(1)在保证变量和函数名在其作用域中的唯一性的情况下,将变量名和函数名处理为字母x加数字的形式,使通过上述混淆处理的变量名和函数名与16进制的字符串的表达形式相似,通过字符的相近性达到混淆的目的;例如,采用该方法对于源代码“functioncode_1(){alert(″加密″);}”进行混淆后的的混淆结果为:functionx67(){window[″\x61\x6c\x65\x72\x74″](″\u52a0\u5bc6″);}其中,函数中的字符串使用16进制表达,以达到混淆的目的。(2)在保证变量和函数名在其作用域中的唯一性的情况下,将变量名和函数名混淆为罗马字母“o”、“l”和数字字符“0”、“1”四个字符的随机组合,通过字符的相近性达到混淆的目的。例如,采用该方法对于源代码“functioncode_1(){alert(″加密″);}”进行混淆后的的混淆结果为:functiondy100O11O1011O100(){window[″\x61\x6c\x65\x72\x74″](″\u52a0\u5bc6″);}其中,函数中的字符串使用16进制表达,以达到混淆的目的。上述两种混淆方法为不可逆混淆,即用户无法通过逆过程还原出源代码。优选地,在执行上述混淆之前或之后,在不影响对源代码进行编译执行的情况下,去除源程序代码中的回车符、换行符及多余的空格;必要的情况下,可将回车符、换行符替换为空格符。通过上述操作,达到降低代码的可读性的目的。优选地,结合或不结合上述混淆方法,本发明将源代码中的所有字符串转换为16进制的字符串表达方式,以达到进一步混淆,降低代码的可读性的目的。步骤102、将混淆后的代码作为一个完整的字符串,使用加密函数,对混淆后的代码进行加密;本发明通过加密函数对混淆后的结果进行二次加密,在需要运行源代码之前,使用对应的解密函数进行还原。优选地,所述加密函数的加密方法可以为:对输入的字符串进行逐个字符的位移操作。位移的字典是加密的核心,可以参考“恺撒位移”加密逻辑,和“恺撒位移”所不同的是,本发明在位移的基础上,同时结合加密字典,对字符进行加密。例如,在加密字典中,原字符a对应加密后的字符f,原字符b对应加密后的字符k,通过位移加密逻辑及字符转译加密逻辑,增加破解的难度,进一步提高代码的安全性。优选地,本发明在上述混淆和加密的基础上,使用现有可逆混淆函数,例如JavaScrip中的escape函数,对上述混淆和加密后的结果进行进一步的混淆,并可设定混淆次数,从而进一步增加破解难度和破解时间,以达到保护源代码的目的。在使用escape函数混淆后,在运行代码之前需要根据混淆次数调用逆混淆函数unescape进行解混淆。图2为本发明实施例提供的动态网页程序代码的混淆加密装置200的功能模块示意图,该装置包括:第一混淆模块201,该模块用于识别待发布网页中的动态页面程序源代码中的变量、函数及字符串,对变量名、函数名和字符串进行混淆处理,其中,对变量名和函数名的混淆为不可逆混淆;加密模块202,用于将经第一混淆模块混淆后的代码作为一个完整的字符串,使用加密函数,对混淆后的代码进行加密。优选地,所述第一混淆模块201对变量名、函数名进行混淆处理时,将变量名和函数名处理为字母x加数字的形式,使混淆处理后的变量名和函数名与16进制的字符串的表达形式相似。本发明另一优选实施例中,所述第一混淆模块201对变量名、函数名进行混淆处理时,将变量名和函数名处理为罗马字母“o”、“l”和数字字符“0”、“1”四个字符的随机组合。结合上述混淆方式,所述第一混淆模块201对所述字符串进行混淆时,将源代码中的所有字符串转换为16进制的字符串表达方式。优选地,所述加密模块202对输入的字符串进行逐个字符的位移操作,在位移的基础上,同时结合加密字典,对字符进行加密。优选地,所述装置还包括:第二混淆模块203,用于在第一混淆模块201输出的混淆结果的基础上,进一步使用可逆混淆函数对所述混淆和加密的后的结果进行进一步地混淆。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1