本发明专利技术提供一种对代码进行保密处理的方法及装置,所述方法包括:将js文件的代码中的变量名根据所述js文件的作用域进行散列运算,得到所述js文件的散列结果;将所述散列结果中的函数进行打包加密,得到打包加密后的字符串。通过本发明专利技术的技术方案,通过对混淆后的散列结果进行打包加密,降低js文件的代码的可读性,加大盗版者对js文件进行破解和理解的难度,从而实现对js文件的版权保护。
【技术实现步骤摘要】
【专利摘要】本专利技术提供一种对代码进行保密处理的方法及装置,所述方法包括:将js文件的代码中的变量名根据所述js文件的作用域进行散列运算,得到所述js文件的散列结果;将所述散列结果中的函数进行打包加密,得到打包加密后的字符串。通过本专利技术的技术方案,通过对混淆后的散列结果进行打包加密,降低js文件的代码的可读性,加大盗版者对js文件进行破解和理解的难度,从而实现对js文件的版权保护。【专利说明】一种对代码进行保密处理的方法及装置
本专利技术涉及代码安全
,尤其涉及一种对代码进行保密处理的方法及装置。
技术介绍
随着大量HTML5应用的出现,Javascript在网页(Web)应用上的重要性越来越高,Javascript (js)代码的复杂性、功能和技术含量也越来越高,对Javascript代码保护的需要也越来越迫切。但是由于javascript代码是以明文执行的,因此现有技术并不能对js文件进行充分的版权保护。
技术实现思路
有鉴于此,本专利技术提供一种对代码进行保密处理的方法及装置,进一步加大破解和理解js代码的难度。 根据本专利技术实施例的第一方面,提供一种对代码进行保密处理的方法,包括: 将js文件的代码中的变量名根据所述js文件的作用域进行散列运算,得到所述js文件的散列结果; 将所述散列结果中的函数进行打包加密,得到打包加密后的字符串。 根据本专利技术实施例的第二方面,提供一种对代码进行保密处理的装置,包括: 散列运算模块,用于将js文件的代码中的变量名根据所述js文件的作用域进行散列运算,得到所述js文件的散列结果; 打包加密模块,用于将所述散列运算模块计算得到的所述散列结果中的函数进行打包加密,得到打包加密后的字符串。 由以上技术方案可见,本专利技术通过将js文件的变量名进行散列运算,从而达到对js文件的代码进行混淆的目的,通过对混淆后的散列结果进行打包加密,降低了 js文件的代码的可读性,加大了盗版者对js文件进行破解和理解的难度,进一步实现了对js文件的版权保护。 应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本专利技术实施例。 【专利附图】【附图说明】 图1是本专利技术一种实施方式中对代码进行保密处理的方法的流程图; 图2是本专利技术另一种实施方式中对代码进行保密处理的方法的流程图; 图3是本专利技术一种实施方式中服务器的结构图; 图4是本专利技术一种实施方式中对代码进行保密处理的装置的逻辑结构图; 图5是本专利技术另一种实施方式中对代码进行保密处理的装置的逻辑结构图。 【具体实施方式】 这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。 在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。 应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。 本申请通过将js文件的变量名进行散列运算,从而达到对js文件的代码进行混淆的目的,通过对混淆后的散列结果进行打包加密,降低了 js文件的代码的可读性,加大了盗版者对js文件进行破解和理解的难度,从而实现了对js文件的版权保护。为对本申请进行进一步说明,提供下列实施例: 请参考图1,图1是本专利技术一种实施方式中对代码进行保密处理的方法的流程图,可以应用于服务器上,包括如下步骤: 步骤101,将js文件的代码中的变量名根据js文件的作用域进行散列运算,得到js文件的散列结果。 步骤102,将散列结果中的函数进行打包加密,得到打包加密后的字符串。 在步骤101中,js文件的作用域以函数为界,不同的函数拥有相对独立的作用域。函数内部可以声明和访问全局变量,也可以声明局部变量(使用var关键字,函数的参数也是局部变量),但函数外部无法访问内部的局部变量。为了更清楚的理解本专利技术实施例中如何通过js文件的作用域对代码进行散列的,以下述代码进行示例性说明: (funct1n O {} var car = "hello"; funct1n add (numl,num2) { return numl+num2 ; })(); 上述代码进行散列运算后的代码为: (funct1n () {} var a = "hello〃 ; funct1n d(a,b){ return a+b ; })(); 其中,在散列运算后的代码中,第一个变量a对应car,第二个变量a对应numl,因此a变量在上述散列运算后的代码中存在于上述作用域的两个地方,add函数中的a变量覆盖了外面的a变量,因此是两个完全不同的值各自存在于不同的作用域下。此外,由于add函数名被替换成了 d,由于add的作用域存在于上面的闭包作用域,函数名称虽然被替换,但是不影响代码的正常逻辑,函数功能和语义并没有改变。因此经过上述散列运算后,达到了对js代码进行混淆的目的,使js代码的可读性大大降低,增加了理解和还原js代码的成本。 在步骤102中,在一实施例中,将散列结果中的函数进行打包加密可以采用pack函数和eval函数。eval函数和eval函数具体的函数实现本专利技术实施例不做详述。 本专利技术实施例通过eval函数加密打包后的代码为: eval (funct1n (p, a, c, k, e, r) {e = String ;if (' 0'.replace (0, e) = = 0){while (c—)r = k ;k = [funct1n(e){return r e} ] ;e = funct1n () {return' ’} ;c = 1} ;while (c—) if (k)p = p.replace (new RegExp (,\\b,+e (c)+,\\b,,,g,),k) ;return p} (,24 = 4 | | [];(funct1n () {2 1 = 5.createElement ("6") ; 1.src = "//l.baidu.com/1, js ? 601fa469903febelabec3479027feb76〃 ;2 s = 5.getElementsByTagName("6") ;s.parentNode.1nsertBefore(I, s)})0 ;,,[], 7,' I hm I var | | _本文档来自技高网...
【技术保护点】
一种对代码进行保密处理的方法,应用在服务器上,其特征在于,所述方法包括:将js文件的代码中的变量名根据所述js文件的作用域进行散列运算,得到所述js文件的散列结果;将所述散列结果中的函数进行打包加密,得到打包加密后的字符串。
【技术特征摘要】
【专利技术属性】
技术研发人员:鄢丙荣,夏贤卯,孙啸,
申请(专利权)人:北京畅游天下网络技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。