CN110851800B - 代码保护方法、装置、系统及可读存储介质 - Google Patents

代码保护方法、装置、系统及可读存储介质 Download PDF

Info

Publication number
CN110851800B
CN110851800B CN201911115188.3A CN201911115188A CN110851800B CN 110851800 B CN110851800 B CN 110851800B CN 201911115188 A CN201911115188 A CN 201911115188A CN 110851800 B CN110851800 B CN 110851800B
Authority
CN
China
Prior art keywords
function
code
key
client
verification
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.)
Active
Application number
CN201911115188.3A
Other languages
English (en)
Other versions
CN110851800A (zh
Inventor
覃丁丁
房滔
翟小刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Keda Technology Co Ltd
Original Assignee
Suzhou Keda Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Suzhou Keda Technology Co Ltd filed Critical Suzhou Keda Technology Co Ltd
Priority to CN201911115188.3A priority Critical patent/CN110851800B/zh
Publication of CN110851800A publication Critical patent/CN110851800A/zh
Application granted granted Critical
Publication of CN110851800B publication Critical patent/CN110851800B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation

Abstract

本申请公开了代码保护方法、装置、系统和可读存储介质;应用于客户端的代码保护方法以及可应用于服务端的代码保护方法,均可实现即便非法人员在客户端进行断点调试,也只能拿到目标键、计算函数和代码请求函数,而无法获得需要保护的功能代码。而客户端执行完计算函数和代码请求函数之后,便可向服务端发送功能代码请求,并接收服务端在验证键值验证通过后发送的功能代码密文、密钥和解密函数。客户端便可自行加载功能代码密文并结合密钥和解密函数进行解密后,便可执行功能代码。即,本申请所提供的方法均可在不影响向客户端提供正常的功能业务服务的情况下,实现对功能代码本身的保护,避免泄漏。

Description

代码保护方法、装置、系统及可读存储介质
技术领域
本申请涉及计算机软件技术领域,特别是涉及代码保护方法、装置、系统及可读存储介质。
背景技术
JavaScript是一种能让网页更加生动活泼的脚本语言,也是目前动态网页设计中最简易又方便的语言。JavaScript脚本程序可以直接编写在HTML文件中,通过浏览器可直接执行,使用JavaScript编写的代码是目前在互联网上最流行最广泛的。JavaScript脚本代码是以明文的方式存放的,脚本设计人员精心编写的脚本源代码,通过记事本等工具即可查看。如此,便会出现脚本代码被第三人直接利用、修改这些代码,窃取用户数据。
如今,大部分网站使用数据加密技术以提高代码安全性。数据加密即按照确定的密码算法结合密钥将敏感的明文数据变换成难以识别的密文数据。当需要时,可使用密钥和密码算法将密文数据还原成明文数据,即解密。这样就可以实现数据的保密性。然而,对于客户端JavaScript代码的安全,仅仅只有数据加密技术是不够的。因为不管用什么加密方法将JavaScript代码加密,在客户端都必须进行解密后才可被执行。因此,只要解密方法被查看到,拿到解密方法,再获取密文就能解出原始代码数据。
综上所述,如何有效地解决JavaScript代码安全等问题,是目前本领域技术人员急需解决的技术问题。
发明内容
本申请的目的是提供代码保护方法、装置、系统及可读存储介质,以对JavaScript代码进行保护。
为解决上述技术问题,本申请提供如下技术方案:
第一种代码保护方法,包括:
向服务端发送携带功能类型的功能类型请求,并接收所述服务端发送的目标键、计算函数和代码请求函数;
执行所述计算函数和所述代码请求函数,以发送携带验证键值的功能代码请求至所述服务端;所述验证键值为所述目标键的键值;
接收所述服务端在所述验证键值验证通过后发送的功能代码密文、密钥和解密函数;
结合所述密钥,利用所述解密函数对所述功能代码密文进行解密,并调用解密后的功能代码。
优选地,执行所述计算函数和所述代码请求函数,以发送携带验证键值的功能代码请求至所述服务端,包括:
利用所述计算函数计算所述目标键的键值,获得所述验证键值;
执行所述代码请求函数,以发送携带所述验证键值的功能代码请求至所述服务端。
优选地,接收所述服务端在所述验证键值验证通过后发送的功能代码密文、密钥和解密函数,包括:
接收所述服务端在确定所述验证键值的时间有效且验证通过后发送的所述功能代码密文、所述密钥和所述解密函数。
第二种代码保护方法,包括:
接收并解析客户端发送的功能类型请求,确定功能类型,并生成目标键、计算函数和代码请求函数;
发送所述目标键、所述计算函数和所述代码请求函数至所述客户端;
接收并解析所述客户端发送的功能代码请求,获得验证键值;其中,所述验证键值为所述客户端利用所述计算函数计算出所述目标键的键值;
在所述验证键值验证通过后,获取所述功能类型对应的功能代码,并对所述功能代码进行加密;
将功能代码密文、解密函数和密钥发送给所述客户端,以便所述客户端利用所述解密函数结合所述密钥对所述功能代码密文进行解密,并调用解码后的功能代码。
优选地,在所述生成目标键、计算函数和代码请求函数之后,利用所述计算函数计算所述目标键的键值并保存;
相应地,在所述验证键值验证通过后,获取所述功能类型对应的功能代码,包括:
在确定所述验证键值的时间有效且所述验证键值与本地存储的键值相同后,获取所述功能代码。
优选地,发送所述目标键、所述计算函数和所述代码请求函数至所述客户端,包括:
利用cookie将所述目标键存入所述客户端;
将所述计算函数和所述代码请求函数转换为指定格式后发送至所述客户端。
第一种代码保护装置,包括:
代码请求函数获取模块,用于向服务端发送携带功能类型的功能类型请求,并接收所述服务端发送的目标键、计算函数和代码请求函数;
功能代码请求发送模块,用于执行所述计算函数和所述代码请求函数,以发送携带验证键值的功能代码请求至所述服务端;所述验证键值为所述目标键的键值;
功能代码获取模块,用于接收所述服务端在所述验证键值验证通过后发送的功能代码密文、密钥和解密函数;
功能实现模块,用于结合所述密钥,利用所述解密函数对所述功能代码密文进行解密,并调用解密后的功能代码。
第二种代码保护装置,包括:
代码请求函数反馈模块,用于接收并解析客户端发送的功能类型请求,确定功能类型,并生成目标键、计算函数和代码请求函数;
代码请求函数反馈模块,用于发送所述目标键、所述计算函数和所述代码请求函数至所述客户端;
功能代码请求解析模块,用于接收并解析所述客户端发送的功能代码请求,获得验证键值;其中,所述验证键值为所述客户端利用所述计算函数计算出所述目标键的键值;
功能代码加密模块,用于在所述验证键值验证通过后,获取所述功能类型对应的功能代码,并对所述功能代码进行加密;
功能代码反馈模块,用于将功能代码密文、解密函数和密钥发送给所述客户端,以便所述客户端利用所述解密函数结合所述密钥对所述功能代码密文进行解密,并调用解码后的功能代码。
一种代码保护系统,包括:
具有通信连接关系的客户端和服务端;
所述客户端包括:
第一存储器,用于存储第一计算机程序;
第一处理器,用于执行所述第一计算机程序时实现上述第一种代码保护方法的步骤;
所述服务端包括:
第二存储器,用于存储第二计算机程序;
第二处理器,用于执行所述第二计算机程序时实现上述第二种代码保护方法的步骤。
在客户端中应用本申请实施例所提供的第一种代码保护方法,客户端向服务端发送功能类型请求之后,便可获得目标键、计算函数和代码请求函数。然后执行计算函数和代码请求函数。此时,即便非法人员在客户端进行断点调试并拿到目标键、计算函数和代码请求函数,并自行解密也没有意义。因为解密得到的结果即算法函数和请求函数,而非真正的功能代码。而客户端执行完计算函数和代码请求函数之后,便可向服务端发送功能代码请求,并接收服务端在验证键值验证通过后发送的功能代码密文、密钥和解密函数。如此,客户端便可自行加载功能代码密文并结合密钥和解密函数进行解密后,便可执行功能代码。可见,本方法可在不影响向客户端提供正常的功能业务服务的情况下,实现对功能代码本身的保护,避免被泄漏,进一步保障用户权益以及代码开发者的权益。
在服务器中应用本申请实施例所提供的第二种代码保护方法,服务端接收并解析功能类型请求之后,便可确定出功能类型。然后生成并发送目标键、计算函数和代码请求函数至客户端,以便客户端执行计算函数和代码请求函数。如此,即便非法人员在客户端进行断点调试并拿到目标键、计算函数和代码请求函数,并自行解密也没有意义。因为解密得到的结果即算法函数和请求函数,而非真正的功能代码。而后接收客户端执行完计算函数和代码请求函数之后,向服务端发送的功能代码请求,并接收服务端在验证键值验证通过后,对读取功能代码,并进行加密。最终发送功能代码密文、密钥和解密函数至客户端。如此,客户端便可自行加载功能代码密文并结合密钥和解密函数进行解密后,便可执行功能代码。可见,本方法可在不影响向客户端提供正常的功能业务服务的情况下,实现对功能代码本身的保护,避免被泄漏,进一步保障用户权益以及代码开发者的权益。
相应地,本申请实施例还提供了与上述代码保护方法相对应的代码保护装置、系统和可读存储介质,具有上述技术效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中第一种代码保护方法的实施流程图;
图2为本申请实施例中第二种代码保护方法的实施流程图;
图3为本申请实施例中一种代码保护系统的具体结构示意图;
图4为本申请实施例中一种代码保护方法的具体实施流程图;
图5为本申请实施例中第一种代码保护装置的结构示意图;
图6为本申请实施例中第二种代码保护装置的结构示意图;
图7为本申请实施例中一种代码保护系统的结构示意图。
具体实施方式
在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一:
请参考图1,图1为本申请实施例中第一种代码保护方法的流程图,该方法可应用于客户端,该方法包括以下步骤:
S101、向服务端发送携带功能类型的功能类型请求,并接收服务端发送的目标键、计算函数和代码请求函数。
客户端(前端)如网站前台部分,运行在PC端,移动端等浏览器上展现给用户浏览的网页。
服务端(后端)如网站后台部分,即用户看不见的东西,通常用于与前端工程师进行数据交互及网站数据的保存和读取。
在本实施例中可预先定义各个需要对功能代码进行保密的功能类型,并为每一个功能类型设置一个唯一标识,如此,客户端向服务端发送携带一个唯一标识的功能类型请求,即可令功能类型请求携带功能类型。其中,需要进行保密的功能类型可具体为新开发功能如网页新特效,涉及用户数据安全的功能如用户登录验证功能。
服务器端接收到该功能类型请求之后,便可解析功能类型请求中携带的具体功能类型,并随机生成目标键(即Key)、计算函数和代码请求函数。服务器端利用计算函数计算目标键的键值并进行存储。
客户端接收服务器端发送的目标键、计算函数和代码请求函数。
其中,计算函数为用于计算目标键的键值的函数,代码请求函数为请求指定功能类型代码的请求函数,以便客户端在执行请求函数时,向服务器发送代码请求,该代码请求携带了客户端利用计算函数计算出的目标键的键值(即下文所称的验证键值)。如此便可验证客户端发送的功能代码请求确定基于服务器反馈的代码请求函数发送的请求。
优选地,接收服务端发送的目标键、计算函数和代码请求函数,可具体包括:
步骤一、利用Cookie获取目标键;
步骤二、接收均转换为指定格式的计算函数和代码请求函数。
为便于描述,下面将上述两个步骤结合起来进行说明。
其中,Cookie指网站为了辨别用户身份、进行session(会话)跟踪而储存在用户本地终端上的数据。Cookie基于Internet的各种服务系统应运而生,是由Web服务器保存在用户浏览器上的小文本文件,它可以包含有关用户的信息,是用户获取、交流、传递信息的主要场所之一,无论何时用户链接到服务器,Web站点都可以访问Cookie信息。
具体的,服务器可通过Cookie方式将存到客户端。
服务器在发送计算函数和代码请求函数时,为了确保数据的安全,可对计算函数和代码请求函数进行格式转换,转换为指定格式,如base64格式。将转化为指定格式的计算函数和代码请求函数发送给客户端。具体的,这个计算函数即用于对base64数据+Key计算出一个值,目的是确保客户端执行的代码(即请求函数)是服务端下发的。base64数据可以为固定数据,如base64数据可具体为用于对业务功能代码进行解密的函数。结合服务端临时生成随机的Key进行计算,可确保计算结果不是固定的。
S102、执行计算函数和代码请求函数,以发送携带验证键值的功能代码请求至服务端。
其中,验证键值为目标键的键值。
客户端接收到目标键、计算函数和代码请求函数之后,便可执行函数,以向服务器发送携带验证键值的功能代码请求。
具体的,功能代码请求发送过程包括:
步骤一、利用计算函数计算目标键的键值,获得验证键值;
步骤二、执行代码请求函数,以发送携带验证键值的功能代码请求至服务端。
为便于描述,下面将上述两个步骤结合起来进行说明。
客户端可先利用计算函数计算目标键的键值,为便于区别,在本文中将客户端计算出的目标键的键值称之为验证键值。
然后,执行代码请求函数,便可发送出携带验证键值的功能代码请求给服务器。
S103、接收服务端在验证键值验证通过后发送的功能代码密文、密钥和解密函数。
服务器端接收到功能代码请求之后,便可通过解析获得验证键值。为了避免功能代码被恶意盗取,可通过比对本地存储的目标键的键值与验证键值,在本地键值与验证键值相同时,从功能代码库中读取与功能代码请求对应的功能代码并进行加密,最终将加密得到的功能代码密文、解密函数以及用于解密的密钥发送给客户端。即,客户端接收服务端在验证键值与本地存储的目标键的键值相同时发送的功能代码密文、密钥和解密函数。
优选地,考虑到Chrome浏览器可以在断点调试后直接修改断点后边代码继续执行的功能,因此可设置Key的有效时间,可设置为3-5秒。因为没有人能在有效时间内拿到数据进行解密后进行分析修改代码。从而也就保证了最终的功能代码请求是无法拦截获取的。即,客户端接收服务端在确定验证键值的时间有效且验证通过后发送的功能代码密文、密钥和解密函数。也就是说,服务器对验证键值进行验证时,不仅要关注键值是否正确还需兼顾考虑验证键值是否在有效时间内。
服务器向客户端发送功能代码密文、解密函数以及用于解密的密钥时,可将功能代码密文放到客户端的指定地址,如内存中的某个地址。
S104、结合密钥,利用解密函数对功能代码密文进行解密,并调用解密后的功能代码。
在客户端中应用本申请实施例所提供的方法,在客户端中应用本申请实施例所提供的第一种代码保护方法,向服务端发送携带功能类型的功能类型请求,并接收服务端发送的目标键、计算函数和代码请求函数;执行计算函数和代码请求函数,以发送携带验证键值的功能代码请求至服务端;验证键值为目标键的键值;接收服务端在验证键值验证通过后发送的功能代码密文、密钥和解密函数;结合密钥,利用解密函数对功能代码密文进行解密,并调用解密后的功能代码。
客户端向服务端发送功能类型请求之后,便可获得目标键、计算函数和代码请求函数。然后执行计算函数和代码请求函数。此时,即便非法人员在客户端进行断点调试并拿到目标键、计算函数和代码请求函数,并自行解密也没有意义。因为解密得到的结果即算法函数和请求函数,而非真正的功能代码。而客户端执行完计算函数和代码请求函数之后,便可向服务端发送功能代码请求,并接收服务端在验证键值验证通过后发送的功能代码密文、密钥和解密函数。如此,客户端便可自行加载功能代码密文并结合密钥和解密函数进行解密后,便可执行功能代码。可见,本方法可在不影响向客户端提供正常的功能业务服务的情况下,实现对功能代码本身的保护,避免被泄漏,进一步保障用户权益以及代码开发者的权益。
实施例二:
基于上述实施例一,本申请还提出另一种可应用于服务器的代码保护方法,实施例二中的代码保护方法与实施例一中的代码保护方法可相互对应参照,重合部分不在一一赘述。
请参考图2,图2为本申请实施例中第二种代码保护方法的流程图,该方法可应用于服务端(如运行后端、后台的服务器),该方法包括以下步骤:
S201、接收并解析客户端发送的功能类型请求,确定功能类型,并生成目标键、计算函数和代码请求函数。
用户对某个功能具有需求时,可通过操作用户界面,使得客户端向服务端发送功能类型请求。
服务端对功能类型请求进行解析之后,便可确定功能类型。在确定功能类型之后,便可随机生成目标键和计算函数,以及用于请求该功能类型的代码请求函数。
S202、发送目标键、计算函数和代码请求函数至客户端。
在生成目标键、计算函数和代码请求函数之后,利用计算函数计算目标键的键值并保存,以便后续验证客户端发送的功能代码请求是否合法有效。
具体的,发送目标键、计算函数和代码请求函数发送过程可包括:
步骤一、利用cookie将目标键存入客户端;
步骤二、将计算函数和代码请求函数转换为指定格式后发送至客户端。
为便于描述,下面将上述两个步骤结合起来进行说明。
即目标键(Key)以cookie方式存到前端,可设置有效时间为3秒;JavaScript代码包含一段随机生成的算法函数和一段请求功能代码的请求函数。服务器先将JavaScript代码转成base64格式,然后用和生成的算法函数相同的方法带入Key计算出一个值存在会话(session)中,最后将base64数据返回给客户端。
S203、接收并解析客户端发送的功能代码请求,获得验证键值。
其中,验证键值为客户端利用计算函数计算出目标键的键值。
验证键值的计算过程以及国内代码请求的发送过程可参照上述实施例一,在此不在一一赘述。
服务器接收到功能代码请求之后,便可通过解析该功能代码得到验证键值。
S204、在验证键值验证通过后,获取功能类型对应的功能代码,并对功能代码进行加密。
验证键值的验证即,比对本地存储的目标键的键值与验证键值是否相同,以及验证键值是否在有效时间内。优选地,可在确定验证键值的时间有效且验证键值与本地存储的键值相同后,获取功能代码。
其中,有效时间可设置为3至5秒,或其他恶意用户无法拿到数据进行解密后进行分析修改代码的时长,如2秒。当然有效时间越短,约可避免功能代码被恶意拦截获取,但是为避免客户端与服务器之间的网络延时导致验证键值失效。因而有效时间的数值可兼顾二者,随着网络传输速度的增快,还可适当缩减有效时间。
S205、将功能代码密文、解密函数和密钥发送给客户端,以便客户端利用解密函数结合密钥对功能代码密文进行解密,并调用解码后的功能代码。
服务器调用功能代码库获取功能代码,生成随机秘钥同样以cookie方式存到客户端,将使用秘钥加密后的功能代码密文和解密函数返回给客户端,功能代码密文到指定地址,由客户端自行加载密文后获取秘钥解密执行功能代码。
在服务器中应用本申请实施例所提供的第二种代码保护方法,接收并解析客户端发送的功能类型请求,确定功能类型,并生成目标键、计算函数和代码请求函数;发送目标键、计算函数和代码请求函数至客户端;接收并解析客户端发送的功能代码请求,获得验证键值;其中,验证键值为客户端利用计算函数计算出目标键的键值;在验证键值验证通过后,获取功能类型对应的功能代码,并对功能代码进行加密;将功能代码密文、解密函数和密钥发送给客户端,以便客户端利用解密函数结合密钥对功能代码密文进行解密,并调用解码后的功能代码。
服务端接收并解析功能类型请求之后,便可确定出功能类型。然后生成并发送目标键、计算函数和代码请求函数至客户端,以便客户端执行计算函数和代码请求函数。如此,即便非法人员在客户端进行断点调试并拿到目标键、计算函数和代码请求函数,并自行解密也没有意义。因为解密得到的结果即算法函数和请求函数,而非真正的功能代码。而后接收客户端执行完计算函数和代码请求函数之后,向服务端发送的功能代码请求,并接收服务端在验证键值验证通过后,对读取功能代码,并进行加密。最终发送功能代码密文、密钥和解密函数至客户端。如此,客户端便可自行加载功能代码密文并结合密钥和解密函数进行解密后,便可执行功能代码。可见,本方法可在不影响向客户端提供正常的功能业务服务的情况下,实现对功能代码本身的保护,避免被泄漏,进一步保障用户权益以及代码开发者的权益。
实施例三:
需要说明的是,上述两种代码保护方法,在实际应用中可单独使用也可结合起来进行应用。下面以具体的应用场景为例,对二者的结合应用进行详细说明。
如图3所示,具有代码保护功能的系统主要模块在后端,分别为Key生成模块、功能代码库、验证模块和加密模块。其中,Key生成模块用于在接收到前端发送的功能类型请求后,随手记生成Key;功能代码库用于存储各种功能代码;验证模块用于验证键值是否有效且正确,加密模块用于对功能代码进行加密。
其中,解密方法即解密函数和密钥;密文即功能代码密文;功能请求即功能类型请求;检测执行为调用eval(atob(base64数据)),即执行算法函数和代码请求函数。
具体的,在图3所示的系统中进行业务处理,具体的业务流程如图4所示。即,当要对某个功能加密时,前端JavaScript只需保留一个请求数据的代码,并按照以下步骤完成功能:
1.前端向后端发送功能类型请求,后端收到该请求后,生成一个随机的Key和一段JavaScript代码。Key以cookie方式存到前端,有效时间为3秒;JavaScript代码包含一段随机生成的算法函数和一段请求功能代码的代码请求函数。后端先将JavaScript代码转成base64格式,然后用和生成的算法函数相同的方法带入Key计算出一个值存在session中,最后将base64数据返回给前端。
2.前端收到返回的base64数据后直接调用eval(atob(base64数据))直接执行该代码。这样即使前端通过断点调试拿到了base64数据自行解密也没有意义。因为解密出来的是一个数据算法函数和请求函数。数据算法函数是随机的,算法中获取Key的键值也不是固定的,如此,便可防止他人用该算法模拟一段脚本取请求真正的功能代码。
另外,Chrome浏览器是可以在断点调试后直接修改断点后边代码继续执行的功能,而设置Key的3秒有效时间也已经阻止了这条后路。具体的,因为没有人能在3秒内拿到数据进行解密后进行分析修改代码。从而也就保证了最终的功能代码请求是无法拦截获取的。
3.后端收到最终的功能代码请求,开始调用功能代码库获取功能代码,生成随机秘钥同样以cookie方式存到前端,使用秘钥加密功能代码,得到功能代码密文。将功能代码密文和解密函数返回给前端,功能代码密文放到前端的指定地址,由前端自行加载密文后获取秘钥解密执行功能代码。
实施例四:
相应于上面的方法实施例一,本申请实施例还提供了一种代码保护装置,下文描述的代码保护装置与上文描述的第一种代码保护方法可相互对应参照。
参见图5所示,该装置包括以下模块:
代码请求函数获取模块101,用于向服务端发送携带功能类型的功能类型请求,并接收服务端发送的目标键、计算函数和代码请求函数;
功能代码请求发送模块102,用于执行计算函数和代码请求函数,以发送携带验证键值的功能代码请求至服务端;验证键值为目标键的键值;
功能代码获取模块103,用于接收服务端在验证键值验证通过后发送的功能代码密文、密钥和解密函数;
功能实现模块104,用于结合密钥,利用解密函数对功能代码密文进行解密,并调用解密后的功能代码。
在客户端中应用本申请实施例所提供的第一种代码保护装置,向服务端发送携带功能类型的功能类型请求,并接收服务端发送的目标键、计算函数和代码请求函数;执行计算函数和代码请求函数,以发送携带验证键值的功能代码请求至服务端;验证键值为目标键的键值;接收服务端在验证键值验证通过后发送的功能代码密文、密钥和解密函数;结合密钥,利用解密函数对功能代码密文进行解密,并调用解密后的功能代码。
客户端向服务端发送功能类型请求之后,便可获得目标键、计算函数和代码请求函数。然后执行计算函数和代码请求函数。此时,即便非法人员在客户端进行断点调试并拿到目标键、计算函数和代码请求函数,并自行解密也没有意义。因为解密得到的结果即算法函数和请求函数,而非真正的功能代码。而客户端执行完计算函数和代码请求函数之后,便可向服务端发送功能代码请求,并接收服务端在验证键值验证通过后发送的功能代码密文、密钥和解密函数。如此,客户端便可自行加载功能代码密文并结合密钥和解密函数进行解密后,便可执行功能代码。可见,本装置可在不影响向客户端提供正常的功能业务服务的情况下,实现对功能代码本身的保护,避免被泄漏,进一步保障用户权益以及代码开发者的权益。
在本申请的一种具体实施方式中,功能代码请求发送模块102,具体用于利用计算函数计算目标键的键值,获得验证键值;执行代码请求函数,以发送携带验证键值的功能代码请求至服务端。
在本申请的一种具体实施方式中,功能代码获取模块103,具体用于接收服务端在确定验证键值的时间有效且验证通过后发送的功能代码密文、密钥和解密函数。
实施例五:
相应于上面的方法实施例二,本申请实施例还提供了一种代码保护装置,下文描述的代码保护装置与上文描述的第二种代码保护方法可相互对应参照。
参见图6所示,该装置包括以下模块:
代码请求函数反馈模块201,用于接收并解析客户端发送的功能类型请求,确定功能类型,并生成目标键、计算函数和代码请求函数;
代码请求函数反馈模块202,用于发送目标键、计算函数和代码请求函数至客户端;
功能代码请求解析模块203,用于接收并解析客户端发送的功能代码请求,获得验证键值;其中,验证键值为客户端利用计算函数计算出目标键的键值;
功能代码加密模块204,用于在验证键值验证通过后,获取功能类型对应的功能代码,并对功能代码进行加密;
功能代码反馈模块205,用于将功能代码密文、解密函数和密钥发送给客户端,以便客户端利用解密函数结合密钥对功能代码密文进行解密,并调用解码后的功能代码。
在服务器中应用本申请实施例所提供的第二种代码保护装置,接收并解析客户端发送的功能类型请求,确定功能类型,并生成目标键、计算函数和代码请求函数;发送目标键、计算函数和代码请求函数至客户端;接收并解析客户端发送的功能代码请求,获得验证键值;其中,验证键值为客户端利用计算函数计算出目标键的键值;在验证键值验证通过后,获取功能类型对应的功能代码,并对功能代码进行加密;将功能代码密文、解密函数和密钥发送给客户端,以便客户端利用解密函数结合密钥对功能代码密文进行解密,并调用解码后的功能代码。
服务端接收并解析功能类型请求之后,便可确定出功能类型。然后生成并发送目标键、计算函数和代码请求函数至客户端,以便客户端执行计算函数和代码请求函数。如此,即便非法人员在客户端进行断点调试并拿到目标键、计算函数和代码请求函数,并自行解密也没有意义。因为解密得到的结果即算法函数和请求函数,而非真正的功能代码。而后接收客户端执行完计算函数和代码请求函数之后,向服务端发送的功能代码请求,并接收服务端在验证键值验证通过后,对读取功能代码,并进行加密。最终发送功能代码密文、密钥和解密函数至客户端。如此,客户端便可自行加载功能代码密文并结合密钥和解密函数进行解密后,便可执行功能代码。可见,本装置可在不影响向客户端提供正常的功能业务服务的情况下,实现对功能代码本身的保护,避免被泄漏,进一步保障用户权益以及代码开发者的权益。
在本申请的一种具体实施方式中,功能代码加密模块204,具体用于在生成目标键、计算函数和代码请求函数之后,利用计算函数计算目标键的键值并保存;在确定验证键值的时间有效且验证键值与本地存储的键值相同后,获取功能代码。
在本申请的一种具体实施方式中,代码请求函数反馈模块201,具体用于利用cookie将目标键存入客户端;将计算函数和代码请求函数转换为指定格式后发送至客户端。
实施例六:
相应于上面的方法实施例,本申请实施例还提供了一种代码保护系统,下文描述的一种代码保护系统与上文描述的两种代码保护方法可相互对应参照。
参见图7所示,该代码保护系统包括:
具有通信连接关系的客户端100和服务端200;
客户端包括:
第一存储器D1,用于存储第一计算机程序;
第一处理器D2,用于执行第一计算机程序时实现如实施例一所描述的第一种代码保护方法的步骤;
服务端包括:
第二存储器D3,用于存储第二计算机程序;
第二处理器D4,用于执行第二计算机程序时实现如实施例二所描述的第二种代码保护方法的步骤。
上文所描述的两种代码保护方法中的步骤可以由代码保护系统的结构实现。具体实现过程可参见上述方法实施例。
实施例七:
相应于上面的方法实施例,本申请实施例还提供了一种可读存储介质,下文描述的一种可读存储介质与上文描述的代码保护方法可相互对应参照。
一种可读存储介质,可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述方法实施例的代码保护方法的步骤。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

Claims (10)

1.一种代码保护方法,其特征在于,包括:
向服务端发送携带功能类型的功能类型请求,并接收所述服务端发送的目标键、计算函数和代码请求函数;
执行所述计算函数和所述代码请求函数,以发送携带验证键值的功能代码请求至所述服务端;所述验证键值为所述目标键的键值;
接收所述服务端在所述验证键值验证通过后发送的功能代码密文、密钥和解密函数;
结合所述密钥,利用所述解密函数对所述功能代码密文进行解密,并调用解密后的功能代码。
2.根据权利要求1所述的代码保护方法,其特征在于,执行所述计算函数和所述代码请求函数,以发送携带验证键值的功能代码请求至所述服务端,包括:
利用所述计算函数计算所述目标键的键值,获得所述验证键值;
执行所述代码请求函数,以发送携带所述验证键值的功能代码请求至所述服务端。
3.根据权利要求1所述的代码保护方法,其特征在于,接收所述服务端在所述验证键值验证通过后发送的功能代码密文、密钥和解密函数,包括:
接收所述服务端在确定所述验证键值的时间有效且验证通过后发送的所述功能代码密文、所述密钥和所述解密函数。
4.一种代码保护方法,其特征在于,包括:
接收并解析客户端发送的功能类型请求,确定功能类型,并生成目标键、计算函数和代码请求函数;
发送所述目标键、所述计算函数和所述代码请求函数至所述客户端;
接收并解析所述客户端发送的功能代码请求,获得验证键值;其中,所述验证键值为所述客户端利用所述计算函数计算出所述目标键的键值;
在所述验证键值验证通过后,获取所述功能类型对应的功能代码,并对所述功能代码进行加密;
将功能代码密文、解密函数和密钥发送给所述客户端,以便所述客户端利用所述解密函数结合所述密钥对所述功能代码密文进行解密,并调用解码后的功能代码。
5.根据权利要求4所述的代码保护方法,其特征在于,在所述生成目标键、计算函数和代码请求函数之后,利用所述计算函数计算所述目标键的键值并保存;
相应地,在所述验证键值验证通过后,获取所述功能类型对应的功能代码,包括:
在确定所述验证键值的时间有效且所述验证键值与本地存储的键值相同后,获取所述功能代码。
6.根据权利要求4所述的代码保护方法,其特征在于,发送所述目标键、所述计算函数和所述代码请求函数至所述客户端,包括:
利用cookie将所述目标键存入所述客户端;
将所述计算函数和所述代码请求函数转换为指定格式后发送至所述客户端。
7.一种代码保护装置,其特征在于,包括:
代码请求函数获取模块,用于向服务端发送携带功能类型的功能类型请求,并接收所述服务端发送的目标键、计算函数和代码请求函数;
功能代码请求发送模块,用于执行所述计算函数和所述代码请求函数,以发送携带验证键值的功能代码请求至所述服务端;所述验证键值为所述目标键的键值;
功能代码获取模块,用于接收所述服务端在所述验证键值验证通过后发送的功能代码密文、密钥和解密函数;
功能实现模块,用于结合所述密钥,利用所述解密函数对所述功能代码密文进行解密,并调用解密后的功能代码。
8.一种代码保护装置,其特征在于,包括:
代码请求函数反馈模块,用于接收并解析客户端发送的功能类型请求,确定功能类型,并生成目标键、计算函数和代码请求函数;
代码请求函数反馈模块,用于发送所述目标键、所述计算函数和所述代码请求函数至所述客户端;
功能代码请求解析模块,用于接收并解析所述客户端发送的功能代码请求,获得验证键值;其中,所述验证键值为所述客户端利用所述计算函数计算出所述目标键的键值;
功能代码加密模块,用于在所述验证键值验证通过后,获取所述功能类型对应的功能代码,并对所述功能代码进行加密;
功能代码反馈模块,用于将功能代码密文、解密函数和密钥发送给所述客户端,以便所述客户端利用所述解密函数结合所述密钥对所述功能代码密文进行解密,并调用解码后的功能代码。
9.一种代码保护系统,其特征在于,包括:
具有通信连接关系的客户端和服务端;
所述客户端包括:
第一存储器,用于存储第一计算机程序;
第一处理器,用于执行所述第一计算机程序时实现如权利要求1至3任一项所述代码保护方法的步骤;
所述服务端包括:
第二存储器,用于存储第二计算机程序;
第二处理器,用于执行所述第二计算机程序时实现如权利要求4至6任一项所述代码保护方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述代码保护方法的步骤。
CN201911115188.3A 2019-11-14 2019-11-14 代码保护方法、装置、系统及可读存储介质 Active CN110851800B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911115188.3A CN110851800B (zh) 2019-11-14 2019-11-14 代码保护方法、装置、系统及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911115188.3A CN110851800B (zh) 2019-11-14 2019-11-14 代码保护方法、装置、系统及可读存储介质

Publications (2)

Publication Number Publication Date
CN110851800A CN110851800A (zh) 2020-02-28
CN110851800B true CN110851800B (zh) 2021-07-23

Family

ID=69600427

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911115188.3A Active CN110851800B (zh) 2019-11-14 2019-11-14 代码保护方法、装置、系统及可读存储介质

Country Status (1)

Country Link
CN (1) CN110851800B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111523128B (zh) * 2020-04-03 2023-12-08 咪咕文化科技有限公司 信息保护方法、系统、电子设备及介质
CN111478903A (zh) * 2020-04-07 2020-07-31 浙江同花顺智能科技有限公司 一种基于客户端的验证方法、服务器及存储介质
CN113268717A (zh) * 2021-04-08 2021-08-17 东信和平科技股份有限公司 基于se的代码程序保护方法、装置及存储介质
CN113608895B (zh) * 2021-08-06 2024-04-09 湖南快乐阳光互动娱乐传媒有限公司 一种web后端数据的接入方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1909447A (zh) * 2005-08-03 2007-02-07 盛趣信息技术(上海)有限公司 使用动态加密算法进行网络数据通讯的方法
FR2960329A1 (fr) * 2010-12-02 2011-11-25 Continental Automotive France Procede d'identification d'un circuit integre a application specifique
CN108460299A (zh) * 2017-02-20 2018-08-28 江苏蓝深远望科技股份有限公司 一种基于非对称算法的键盘加密系统及键盘加密方法
CN109088889A (zh) * 2018-10-16 2018-12-25 深信服科技股份有限公司 一种ssl加解密方法、系统及计算机可读存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1909447A (zh) * 2005-08-03 2007-02-07 盛趣信息技术(上海)有限公司 使用动态加密算法进行网络数据通讯的方法
FR2960329A1 (fr) * 2010-12-02 2011-11-25 Continental Automotive France Procede d'identification d'un circuit integre a application specifique
CN108460299A (zh) * 2017-02-20 2018-08-28 江苏蓝深远望科技股份有限公司 一种基于非对称算法的键盘加密系统及键盘加密方法
CN109088889A (zh) * 2018-10-16 2018-12-25 深信服科技股份有限公司 一种ssl加解密方法、系统及计算机可读存储介质

Also Published As

Publication number Publication date
CN110851800A (zh) 2020-02-28

Similar Documents

Publication Publication Date Title
CN110851800B (zh) 代码保护方法、装置、系统及可读存储介质
CN112333198A (zh) 安全跨域登录方法、系统及服务器
JP7184927B2 (ja) コンテンツプラットフォーム上でのユーザ対話の検証
CN105354451B (zh) 访问鉴权的方法及系统
CN111970109B (zh) 一种数据传输方法及系统
US11757619B2 (en) Generating sequences of network data while preventing acquisition or manipulation of time data
US11949688B2 (en) Securing browser cookies
US20220376900A1 (en) Aggregating encrypted network values
CN115580413B (zh) 一种零信任的多方数据融合计算方法和装置
US10102384B2 (en) Digital content execution control mechanism
US11917078B2 (en) Preventing data manipulation using multiple aggregation servers
CN114978934A (zh) 信息脱敏方法和装置、电子设备及计算机可读存储介质
CN109462604B (zh) 一种数据传输方法、装置、设备及存储介质
CN108259490B (zh) 一种客户端校验方法及装置
CN112733166A (zh) license认证授权功能的实现方法及系统
CN104915607A (zh) 一种基于移动终端的密码数据处理和交换方法
JP7098065B1 (ja) 電気通信ネットワーク測定におけるデータ操作の防止およびユーザのプライバシーの保護
CN113783835B (zh) 一种口令分享方法、装置、设备及存储介质
CN113821805B (zh) 一种数据加密方法及装置
US11736459B2 (en) Preventing fraud in aggregated network measurements
CN117240528A (zh) 一种基于本地安全代理服务的跨客户端单点登录方法
KR20220140638A (ko) 모델 보호 방법과 장치, 전자 기기, 모델 보호 시스템, 저장 매체 및 컴퓨터 프로그램
CN116560876A (zh) 应用程序接口识别方法、装置、系统及存储介质
CN115277225A (zh) 一种数据加密方法、解密方法及相关设备
CN114282253A (zh) 基于区块链的数据授权方法及装置、存储介质及电子设备

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
GR01 Patent grant
GR01 Patent grant