CN116318686A - 一种数据加密传输方法、装置、电子设备及存储介质 - Google Patents

一种数据加密传输方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116318686A
CN116318686A CN202310552975.4A CN202310552975A CN116318686A CN 116318686 A CN116318686 A CN 116318686A CN 202310552975 A CN202310552975 A CN 202310552975A CN 116318686 A CN116318686 A CN 116318686A
Authority
CN
China
Prior art keywords
key
data
indefinite
target
length
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.)
Granted
Application number
CN202310552975.4A
Other languages
English (en)
Other versions
CN116318686B (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.)
Chongqing Selis Phoenix Intelligent Innovation Technology Co ltd
Original Assignee
Chengdu Seres 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 Chengdu Seres Technology Co Ltd filed Critical Chengdu Seres Technology Co Ltd
Priority to CN202310552975.4A priority Critical patent/CN116318686B/zh
Publication of CN116318686A publication Critical patent/CN116318686A/zh
Application granted granted Critical
Publication of CN116318686B publication Critical patent/CN116318686B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • H04L63/0435Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Storage Device Security (AREA)

Abstract

本申请涉及信息安全技术领域,提供了一种数据加密传输方法、装置、电子设备及存储介质。该方法包括:确定目标对称加密算法以及加密密钥长度;生成或获取固定密钥;生成不定密钥;对固定密钥和不定密钥进行组合,得到第一组合密钥;根据第一组合密钥生成目标密钥,目标密钥的密钥长度与加密密钥长度相同;获取待传输的明文数据;基于目标对称加密算法,使用目标密钥对明文数据进行加密,得到密文数据;将密文数据传输至服务器。本申请可适用于数据传输频繁且数据量较大的数据传输场景,可在确保用户的数据安全的同时又可提升加解密速度,并且不会耗费过多计算资源。

Description

一种数据加密传输方法、装置、电子设备及存储介质
技术领域
本申请涉及信息安全技术领域,尤其涉及一种数据加密传输方法、装置、电子设备及存储介质。
背景技术
在车联网中,服务器与客户端之间的数据传输频繁且数据量较大。例如,客户端(安装有车控APP(Application,应用程序))需要经常上报用户、车辆等数据,而这些数据涉及到用户的隐私,通常需要进行加密传输,以保护用户的数据隐私安全。
一般情况下,加密算法越复杂,数据被攻击或破解的难度越大,数据的安全性越高,但是相对地解密时间就会越长,且程序需要占用服务器/客户端的计算资源越大。而现有的数据加密传输方案,要么是加密算法过于简单导致安全性较低,要么就是加密算法过于复杂而导致解密时间过长并占用较多的计算资源。
因此,亟需提供一种针对数据传输频繁且数据量较大的数据传输场景,加密算法较为简单,但破解难度又较大,同时又不会耗费过多计算资源的数据加密传输方法,以确保用户的数据安全的同时又可提升加解密速度。
发明内容
有鉴于此,本申请实施例提供了一种数据加密传输方法、装置、电子设备及存储介质,以提供一种针对数据传输频繁且数据量较大的数据传输场景,加密算法较为简单,但破解难度又较大,同时又不会耗费过多计算资源的数据加密传输方法,以确保用户的数据安全的同时又可提升加解密速度。
本申请实施例的第一方面,提供了一种数据加密传输方法,包括:
确定目标对称加密算法以及加密密钥长度;
生成或获取固定密钥;
生成不定密钥;
对固定密钥和不定密钥进行组合,得到第一组合密钥;
根据第一组合密钥生成目标密钥,目标密钥的密钥长度与加密密钥长度相同;
获取待传输的明文数据;
基于目标对称加密算法,使用目标密钥对明文数据进行加密,得到密文数据;
将密文数据传输至服务器。
本申请实施例的第二方面,提供了一种数据加密传输装置,包括:
确定模块,被配置为确定目标对称加密算法以及加密密钥长度;
第一生成模块,被配置为生成或获取固定密钥;
第二生成模块,被配置为生成不定密钥;
组合模块,被配置为对固定密钥和不定密钥进行组合,得到第一组合密钥;
密钥生成模块,被配置为根据第一组合密钥生成目标密钥,目标密钥的密钥长度与加密密钥长度相同;
获取模块,被配置为获取待传输的明文数据;
加密模块,被配置为基于目标对称加密算法,使用目标密钥对明文数据进行加密,得到密文数据;
传输模块,被配置为将密文数据传输至服务器。
本申请实施例的第三方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并且可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
本申请实施例的第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
本申请实施例与现有技术相比,其有益效果至少包括:在客户端(安装有车控APP)需要向服务器频繁地上报/传输用户、车辆等数据,且数据量较大的场景下,客户端可先确定目标对称加密算法以及加密密钥长度;生成或获取固定密钥;生成不定密钥;然后,对固定密钥和不定密钥进行组合,得到第一组合密钥;再根据第一组合密钥生成目标密钥,目标密钥的密钥长度与加密密钥长度相同;之后,获取待传输的明文数据;基于目标对称加密算法,使用目标密钥对明文数据进行加密,得到密文数据;最后,将密文数据传输至服务器。通过上述方式,一方面,采用对称加密的方式可提升加解密的速度,且无需耗费过多的计算资源;另一方面,采用固定密钥和不定密钥进行组合生成目标密钥,可大大增加密钥被破解的难度,从而可有效防止第三方监听窃取客户端上报/传输的数据,有利于确保用户的数据安全性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请实施例的一种应用场景的场景示意图;
图2是本申请实施例提供的一种数据加密传输方法的流程示意图;
图3是本申请实施例提供的数据加密传输方法中的一种循环散列运算的流程示意图;
图4是本申请实施例提供的数据加密传输方法中的一种密文数据结构示意图;
图5是本申请实施例提供的一种数据加密传输的逻辑模块组装结构示意图;
图6是本申请实施例提供的一种数据加密传输装置的结构示意图;
图7是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
字节,就是Byte(8位),字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符。字节是二进制数据的单位。一个字节通常8位长。
在本申请的一些实现方案上,采用了char数组,因为char在C语言中长度也是8位,所以char数组即可视为字节数组。
C语言库里面有大量生成随机数的函数,例如,arc4random()函数生成一个随机数;arc4random_uniform()函数接受一个数字作为上限,生成一个范围内的随机数;arc4random_buf()函数接受一个缓存和长度作为参数,给这个缓存内填充随机数。
散列运算,散列法(Hashing)或哈希法是一种将字符组成的字符串转换为固定长度(一般是更短长度)的数值或索引值的方法,称为散列法,也叫哈希法。
在本申请实施例中,未特殊说明的函数均为系统函数。
在本申请实施例中,描述的变量x(x=1,2,3...)均代表一组变量,而不是仅指一个变量。因为有的数据不是一个变量可以描述清楚的,但它在描述上是一个完整的概念和范畴,例如,变量1描述的是选定的一个或多个目标对称加密算法。
下面将结合附图详细说明根据本申请实施例的一种数据加密传输方法和装置。
图1是本申请实施例的应用场景的场景示意图。该应用场景可以包括客户端101、服务器102以及网络103。
客户端101可以是硬件,也可以是软件。当客户端101为硬件时,其可以是具有显示屏且支持与服务器102通信的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等。当客户端101为软件时,其可以安装在如上的电子设备中。例如,可以是手机APP端、H5(HTML5.0,超文本5.0)小程序端、网页端或者其他服务器接口方。客户端101可以实现为多个软件或软件模块,也可以实现为单个软件或软件模块,本申请实施例对此不作限制。进一步地,客户端101上可以安装有各种应用,例如数据处理应用、即时通信工具、社交平台软件、搜索类应用等。
服务器102可以是提供各种服务的服务器,例如,对与其建立通信连接的客户端发送的请求进行接收的后台服务器,该后台服务器可以对终端设备发送的请求进行接收和分析等处理,并生成处理结果。服务器102可以是一台服务器,也可以是由若干台服务器组成的服务器集群,或者还可以是一个云计算服务中心,本申请实施例对此不作限制。
需要说明的是,服务器102可以是硬件,也可以是软件。当服务器102为硬件时,其可以是为客户端101提供各种服务的各种电子设备。当服务器102为软件时,其可以是为客户端101提供各种服务的多个软件或软件模块,也可以是为客户端101提供各种服务的单个软件或软件模块,本申请实施例对此不作限制。
网络103可以是采用同轴电缆、双绞线和光纤连接的有线网络,也可以是无需布线就能实现各种通信设备互联的无线网络,例如,蓝牙(Bluetooth)、近场通信(Near FieldCommunication,NFC)、红外(Infrared)等,本申请实施例对此不作限制。
用户可以通过客户端101经由网络103与服务器102建立通信连接,以接收或发送信息等。具体地,在用户需要使用客户端101向服务器102传输车控数据(包括用户数据、车辆数据等)时,客户端101可先确定目标对称加密算法以及加密密钥长度;生成或获取固定密钥;生成不定密钥;然后,对固定密钥和不定密钥进行组合,得到第一组合密钥;再根据第一组合密钥生成目标密钥,目标密钥的密钥长度与加密密钥长度相同;之后,获取待传输的明文数据;基于目标对称加密算法,使用目标密钥对明文数据进行加密,得到密文数据;最后,将密文数据传输至服务器102。通过上述方式实现了在确保用户的数据安全的同时又可提升加解密速度,且还不会耗费过多计算资源。
需要说明的是,客户端101、服务器102以及网络103的具体类型、数量和组合可以根据应用场景的实际需求进行调整,本申请实施例对此不作限制。
图2是本申请实施例提供的一种数据加密传输方法的流程示意图。图2的数据加密传输方法可以由图1的客户端101执行。如图2所示,该数据加密传输方法包括:
步骤S201,确定目标对称加密算法以及加密密钥长度。
目标对称加密算法,可以是DES(DataEncryption Standard)算法、AES(AdvancedEncryption Standard)算法、CAST算法、RC4算法、Blowfish算法等中的至少一种。
在本申请实施例中,可将选定的目标对称加密算法记录为变量1。
每个目标对称加密算法的密钥长度可选,例如,AES算法的密钥长度可以选择16位、24位或32位。
在本申请实施例中,可将选定的加密密钥长度记录为变量2。
作为一示例,用户选定了AES算法作为目标对称加密算法,可进一步选定AES算法的密钥长度,如选定了16位,则加密密钥长度为16位。
步骤S202,生成或获取固定密钥。
固定密钥,可以是一个字节数组,例如,char数组。该字节数组的长度和内容可根据业务需求指定,具体不做限制。
固定密钥的生成或获取步骤在APP的整个生命周期内只执行一次。
固定密钥可以是分别由客户端和服务器按照相同的方法生成相同的字节数组。也可以是由服务器生成字节数组后下发给客户端使用。客户端和服务器同时将固定密钥存储到预置的存储空间,以便于后续的调用。
为了进一步提高数据加密传输的安全性,固定密钥可以定期或不定期更换,更换的周期可由业务需求指定。
如果固定密钥是由服务器和客户端各自生成的相同字节数组,那么固定密钥的更换周期收到客户端发版的影响,只有当客户端发版时,才可以去替换固定密钥及其相关数据。
如果固定密钥是由服务器生成字节数组后下发给客户端使用的,那么固定密钥的更换周期不受客户端发版的影响。服务器端可根据业务需求设定更换周期,并将最新固定密钥下发给客户端。
如果固定密钥更换周期、目标对称加密算法等数据均是由服务器下发给客户端使用,则客户端可不发版。服务器端可根据业务需求设定更换周期,并将最新固定密钥下发给客户端。
步骤S203,生成不定密钥。
不定密钥,可以是一个长度为固定位数的字节数组,例如,char数组。该字节数组的每个元素中的字节内容通常为随机数。该字节数组的长度可以是根据业务需求预先指定的一个固定值,也可以在需要生成不定密钥时临时指定的一个固定值。
在本申请实施例中,可以将不定密钥的长度是否固定,以及固定为多少位,记录为变量3。
客户端在每一次进行数据加密时均会生成一个不定密钥。
在iOS(Cisco的网际操作系统)系统中,生成一个长度为固定位数的字节数组的实现方式有多种。以下列举其中的一种实现方式来进行详细说明。
步骤(1),声明一个char数组,指定该char数组的长度为指定的长度。然后,调用void bzero(void *, size_t)函数,第一个参数传入数组名,第二个参数传入长度,对其进行初始化。步骤(2),通过调用CCRNGStatusCCRandomGenerateBytes(void *bytes, size_tcount)方法,第一个参数传入步骤(1)中生成的char数组,第一个参数传入步骤(1)中指定的长度。这个方法调用后,步骤(1)中生成的char数组就被填充好了字节,即可获得一个不定密钥。
步骤S204,对固定密钥和不定密钥进行组合,得到第一组合密钥。
对固定密钥和不定密钥进行组合,具体可以是将固定密钥和不定密钥进行合并,形成一个字节数组,即得到第一组合密钥。
步骤S205,根据第一组合密钥生成目标密钥,目标密钥的密钥长度与加密密钥长度相同。
目标密钥,是指基于前述所选定的目标对称加密算法执行后续的数据加密步骤时需要使用到的密钥。
步骤S206,获取待传输的明文数据。
明文数据,是指未经加密前的待传输数据。待传输数据包括但不限于用户数据(如用户ID、用户联系方式等)、车辆数据(如车辆ID、车辆权限信息等)。
步骤S207,基于目标对称加密算法,使用目标密钥对明文数据进行加密,得到密文数据。
步骤S208,将密文数据传输至服务器。
本申请实施例提供的技术方案,通过上述方式,一方面,采用对称加密的方式可提升加解密的速度,且无需耗费过多的计算资源;另一方面,采用固定密钥和不定密钥进行组合生成目标密钥,可大大增加密钥被破解的难度,从而可有效防止第三方监听窃取客户端上报/传输的数据,有利于确保用户的数据安全性。
在一些实施例中,在上述步骤S202中,客户端101获取固定密钥的步骤,具体包括:
按照预设时间间隔,向服务器发送获取固定密钥的请求信息,请求信息包括当前使用固定密钥;
若接收到服务器返回的消息错误码,消息错误码携带有最新固定密钥,则使用最新固定密钥覆盖当前使用固定密钥;
上述步骤S204,包括:
对最新固定密钥和不定密钥进行组合,得到第一组合密钥。
预设时间间隔,可以根据业务需求灵活设置,例如,可以是15天、30天、60天等,具体不做限定。
作为一示例,服务器102可根据源字符串、源文件或者源图片,生成固定密钥并存储,同时将该固定密钥下发给客户端101使用。之后,服务器102可开启一个定时器,每间隔一段时间更换一次固定密钥及其相关数据(如更换时间等)。客户端101利用NSTimer类,调用其初始化函数+(NSTimer*)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation*)invocationrepeats:(BOOL)yesOrNo;或类方法scheduledTimerWithTimeInterval或其变体,开启一个定时器,按照预设时间间隔(这个时间可以小于服务器更换数据的定时器时间,但是2个时间间隔没有什么特别的关系),以HTTP请求方式,请求服务器的固定密钥相关数据下发接口,参数带入客户端101目前使用的旧的数据(即当前使用固定密钥)。在接收到服务器102返回的消息错误码时,使用该消息错误码中携带的最新固定密钥覆盖当前使用固定密钥。之后,使用最新固定密钥和不定密钥进行组合,得到第一组合密钥。
在客户端101任何一次调用服务器的某个服务器接口的过程中,如果客户端101使用了过期的固定密钥与不定密钥进行组合,并进行之后的加密操作得到密文数据,并将该密文数据传输给服务器,服务器可通过客户端101当时调用的具体接口向客户端返回固定密钥过期的消息错误码,该消息错误码附带有最新固定密钥相关数据。客户端在接收到服务器返回的定密钥过期的消息错误码后,使用最新固定密钥覆盖当前使用固定密钥。
在另一些实施例中,在上述步骤S202中,客户端101获取固定密钥的步骤,具体包括:
在与服务器建立起持久化长连接后,接收服务器推送的密钥过期消息,密钥过期消息携带有最新固定密钥;
使用最新固定密钥覆盖当前使用固定密钥;
上述步骤S204,包括:
对最新固定密钥和不定密钥进行组合,得到第一组合密钥。
作为一示例,服务器102开启一个定时器,隔一段时间更换固定密钥及其相关数据。客户端101在启动之初,就创建URLSession类实例,通过调用其-(NSURLSessionWebSocketTask *)webSocketTaskWithURL:(NSURL *)url方法或其变体方法,与服务器102建立起持久化长连接(即websocket长连接),这个方法会返回一个NSURLSessionWebSocketTask类实例,它负责socket长连接中的数据传输。服务器102在每次更换完固定密钥及其相关数据后,就向客户端101推送密钥过期消息,该密钥过期消息携带有最新固定密钥。客户端101在接收到该密钥过期消息后,使用其携带的最新固定密钥覆盖当前使用固定密钥。之后,再使用最新固定密钥和不定密钥进行组合,得到第一组合密钥。
在本申请实施例中,通过定期或不定期更换固定密钥,可使得第三方即使截取到客户端与服务器之间的传输数据,也难以破解该传输数据,从而可提高客户端与服务器之间的数据传输安全性。并且,这让密钥的存储不再成为数据传输安全的薄弱环节。
在一些实施例中,在上述步骤S202中,客户端101生成固定密钥的步骤,具体包括:
获取指定字符串或指定文件;
根据指定字符串或指定文件,生成固定密钥。
指定字符串,可以是存储在客户端/服务器中的字符串,该字符串的长度和内容可根据业务需求指定。业务需求主要是描述客户端/服务器对它们之间传输的数据的数据量大小以及加密安全级别的要求。例如,客户端/服务端之间传输的数据量较大,加密安全级别较高,则指定的字符串的长度可以长一些,内容可以复杂一些。反之,则指定的字符串可以短一些,内容可简单一些。
指定文件,可以是存储在APP包或者沙盒下的文件,该文件的长度、内容和格式不限,可以根据业务需求指定。
在iOS(Cisco的网际操作系统)系统中,客户端/服务器生成固定密钥的实现方式有很多种。下面列举其中的几种实现方式来进行详细说明。
第一种实现方式:
步骤1),将指定字符串存放在一个NSString类实例中,对它调用实例方法-(nullable const char*)cStringUsingEncoding:(NSStringEncoding)encoding,方法参数传入一个枚举值,可以是NSUTF8StringEncoding或者NSASCIIStringEncoding,参数的意思是:通过什么编码方式把一个字符串转成一个char字符串数组。该方法的返回值就是指向这个char字符串数组的指针(即char指针)。
步骤2),利用NSData的类方法+(instancetype)dataWithBytes:(nullableconstvoid *)bytes length:(NSUInteger)length;第一个参数传入步骤1)得到的char指针,第二个参数传入指定字符串的长度(通过访问NSString类实例调的length属性得到);这个方法生成一个NSData类实例。
步骤3),通过访问NSData类实例的bytes属性得到一个字节数组,即可得到一个固定密钥。
第二种实现方式:
步骤1),将指定字符串存放在一个NSString类实例中,访问NSString类实例的length属性,得到字符串的长度。
步骤2),声明一个char数组,指定其长度为NSString类实例的length属性+1。在C语言中,字符串以数组存储,其结束标志为\0,所以必须长度+1来存放这个\0。之后,调用void bzero(void *, size_t)函数,第一个参数传入数组名,第二个参数传入长度,对其进行初始化。
步骤3),对NSString类实例调用-(BOOL)getCString:(char*)buffermaxLength:(NSUInteger)maxBufferCount encoding:(NSStringEncoding)encoding方法;第一个参数传入步骤2)中生成的char数组,第二个参数传入这个char数组分配的内存长度(例如,可通过调用sizeof()方法,参数传入步骤2)中生成的char数组),第三个参数传入一个枚举值,可以是NSUTF8StringEncoding或者NSASCIIStringEncoding,参数的意思是:用什么编码方式,把一个字符串转成一个char字符串数组。这个方法调用后,步骤2)中生成的char数组就被填充好了字节,即可得到一个固定密钥。
第三种实现方式:
步骤1),将指定字符串存放在一个NSString类实例中,访问NSString类实例的length属性,得到字符串的长度。
步骤2),声明一个char数组,指定其长度为NSString类实例的length属性+1。
步骤3),对NSString类实例调用- (BOOL)getBytes:(nullablevoid *)buffermaxLength:(NSUInteger)maxBufferCount usedLength:(nullableNSUInteger *)usedBufferCount encoding:(NSStringEncoding)encoding options:(NSStringEncodingConversionOptions)options range:(NSRange)rangeremainingRange:(nullableNSRangePointer)leftover方法,第一个参数传入步骤2)中生成的char数组,第二个参数传入这个char数组分配的内存长度(可调用sizeof()方法,参数传入步骤2)中生成的char数组),第三个参数传入一个int变量的地址,第四个参数传入枚举值,该枚举值可以是NSUTF8StringEncoding或者NSASCIIStringEncoding,第五个参数传入配置项,第六个参数传入要转换的范围,通常是0-指定字符串的长度,第七个参数传入NULL。这个方法调用后,步骤2)中生成的char数组就被填充好了字节,即可得到一个固定密钥。
第四种实现方式:
若该指定文件是存储在APP包下,则可通过访问NSBundle的main属性得到默认的NSBundle类实例。如果该指定文件存放在其他资源包下,则要用NSBundle的类方法+(NSBundle*)bundleForClass:(Class)aClass得到对应的NSBundle类实例。之后再对NSBundle类实例调用pathsForResourcesOfType方法或其变体方法,参数传入文件名和类型,得到文件的路径URL。接下来,可调用NSData的类方法+(nullabledataWithContentsOfFile:(NSString*)path或其变体方法,传入其文件的地址URL,得到一个NSData类实例。通过访问NSData类实例的bytes属性得到一个字节数组,即可得到一个固定密钥。
第五种实现方式:
若该指定文件是存储在沙盒下,则可通过访问FileManager类的default属性,得到文件操作句柄,对句柄调用url(for:, in:, appropriateFor:, create:)方法,第一个参数传入沙盒目录枚举,第二个参数传入用户域枚举,第三个参数传入nil(表示无值,任何变量在没有被赋值之前的值都为nil,对于真假判断,只有nil与false表示假,其余均为真),第四个参数传入false,意为如果不存在该文件就不要创建新文件,得到文件的路径URL。之后,调用NSData的类方法+ (nullableinstancetype)dataWithContentsOfFile:(NSString *)path或其变体方法,传入其文件的地址URL,得到一个NSData类实例。最后,通过访问NSData类实例的bytes属性得到一个字节数组,即可得到一个固定密钥。
第六种实现方式:
步骤1),声明一个char数组,指定其长度为业务需求指定的长度。调用void bzero(void *, size_t)函数,第一个参数传入数组名,第二个参数传入长度,对其进行初始化。
步骤2),通过调用CCRNGStatusCCRandomGenerateBytes(void *bytes, size_tcount)方法,第一个参数传入步骤1)中生成的char数组,第一个参数传入步骤1)中指定的长度。这个方法调用后,步骤1)中生成的char数组就被填充好了字节,即可得到一个固定密钥。
第七种实现方式:
首先,生成一个随机字符串,再按照上述第一种、第二种或第三种实现方式中的其中一种生成一个字节数组,即可得到一个固定密钥。
在iOS系统中,随机字符串的生成方式有很多种,下面列举其中的一种实现方式进行详细说明。
利用一个固定字符串生成随机字符串的具体过程如下:利用for循环遍历这个固定字符的每一个字符,在每一次循环中,利用arc4random()函数和固定字符的长度做余数运算,得到一个结果为整数i,把固定字符串的i位置上的字符取出,组合在新的字符串上,具体是添加在新字符串的末尾还是插入到新字符串的某个位置上,可以继续进行随机运算来计算这个位置;最后,得到一个随机字符串。
第八种实现方式:
步骤1),声明一个char数组,指定其长度为业务需求指定的长度。调用void bzero(void *, size_t)函数,第一个参数传入数组名,第二个参数传入长度,对其进行初始化。
步骤2),通过调用void arc4random_buf(void *__buf, size_t __nbytes)方法,第一个参数传入步骤1)中生成的char数组,第一个参数传入步骤1)中指定的长度。这个方法调用后,步骤1)中生成的char数组就被填充好了字节,即可得到一个固定密钥。
第九种实现方式:
通过预先在图片中隐藏一组密钥,根据现有的算法将该图片中的固定密钥提取出来,即可得到一个固定密钥。
在一些实施例中,在上述步骤S204中,第一组合密钥的获得方式包括:
第一种获得方式:复制N组固定密钥以及M组不定密钥,N、M均为≥1的正整数;将N组固定密钥和M组不定密钥进行随机组合,得到第一组合密钥。
作为一示例,假设根据上述步骤生成了固定密钥01和不定密钥01,那么可复制1组(此时N=1)固定密钥01和1组(此时M=1)不定密钥01,然后,可按照固定密钥01+不定密钥01,或者不定密钥01+固定密钥01的方式进行组合,得到第一组合密钥。
下面以固定密钥01+不定密钥01的组合方式生成第一组合密钥为例进行具体说明。
步骤1),声明一个char数组,指定其长度为固定密钥01和不定密钥01的长度之和,称其为合并后的结果数组。调用void bzero(void *, size_t)函数,第一个参数传入数组名,第二个参数传入长度,对其进行初始化。
步骤2),利用函数void *memcpy(void *__dst,const void *__src, size_t __n);第一个参数传入合并后的结果数组,第二个参数传入固定密钥01,第三个参数传入固定密钥01的长度;即把固定密钥01加入到了结果中。
步骤3),利用函数void *memcpy(void *__dst,const void *__src, size_t __n);第一个参数传入合并后的结果数组和固定密钥01的长度之和,第二个参数传入不定密钥01,第三个参数传入不定密钥01的长度;即把不变定密钥01加入到了结果中,并位于固定密01之后,即可得到第一组合密钥。
作为另一示例,假设根据上述步骤生成了固定密钥01和不定密钥01,那么可复制2组(此时N=2)固定密钥01和1组(此时M=1)不定密钥01,然后,可按照固定密钥01+固定密钥01+不定密钥01,或者不定密钥01+固定密钥01+固定密钥01,或者固定密钥01+不定密钥01+固定密钥01的方式进行组合,得到第一组合密钥。
第二种获得方式:从固定密钥中截取出第一数据,从不定密钥中截取出第二数据;复制P组第一数据以及Q组第二数据,P、Q均为≥1的正整数;将固定密钥、不定密钥、P组第一数据和Q组第二数据进行随机组合,得到第一组合密钥。
作为一示例,假设根据上述步骤生成了固定密钥01和不定密钥01,固定密钥01和不定密钥01均为一个16位的字节数组,那么可以从固定密钥01中截取出第一数据a(例如,可以是固定密钥01中的第1-8位数据;或者是固定密钥01中的第9-16位数据;或者是固定密钥01中的第1-4位数据等),从不定密钥01中截取出第二数据b(例如,可以是不定密钥01中的第1-8位数据;或者是不定密钥01中的第9-16位数据;或者是不定密钥01中的第1-4位数据等)。再复制1组第一数据a和1组第二数据b,之后,将固定密钥01、不定密钥01、第一数据a和第二数据b进行随机组合,得到第一组合密钥。例如,按照固定密钥01+不定密钥01+第一数据a+第二数据b,或者,不定密钥01+固定密钥01+第一数据a+第二数据b等的方式进行组合。
第三种获得方式:将P组第一数据和Q组第二数据进行随机组合,得到第一组合密钥。
结合上述示例,复制1组第一数据a和1组第二数据b,将1组第一数据a和1组第二数据b进行随机组合,得到第一组合密钥。例如,按照第一数据a+第二数据b,或者,第二数据b+第一数据a的方式进行组合。
作为另一示例,假设复制2组第一数据a和2组第二数据b,那么可以2组第一数据a和2组第二数据b进行随机组合,得到第一组合密钥。例如,按照第一数据a+第一数据a+第二数据b+第二数据b;或者第二数据b+第二数据b+第一数据a+第一数据a;或者第一数据a+第二数据b+第一数据a+第二数据b等方式进行组合,得到第一组合密钥。
关于固定密钥和不定密钥的组合方式是可以是任意的排列组合,上述示例只列举了其中的几种组合方式。在本申请实施例中,可以将固定密钥和不定密钥的组合方式记录为变量4。
在一些实施例中,上述步骤S205,具体包括:
对第一组合密钥进行第一轮散列运算,得到第一运算结果;
当针对第一组合密钥进行散列运算的轮数未满足预设的轮数阈值时,对前一轮散列运算得到的运算结果和前一轮轮散列运算输入的组合密钥进行组合,得到组合结果,对组合结果进行再次散列运算,得到第K轮运算结果;
当针对第一组合密钥进行散列运算的轮数满足预设的轮数阈值时,根据第K轮运算结果生成目标密钥;其中,K为≥1的正整数。
散列运算的算法可以是MD5(Message Digest Algorithm 5,消息摘要算法)、SHA(Secure Hash Algorithm,安全哈希算法)等中的任意一种。在本申请实施例中,可以将选定的散列运算算法记录为变量5。
以采用MD5为例,对第一组合密钥(如为固定密钥01+不定密钥01)进行第一轮散列运算,得到第一运算结果。具体的实现方式如下:
步骤1),声明一个char数组,指定其长度为16,称其为MD5结果数组01。调用voidbzero(void *, size_t)函数,第一个参数传入数组名,第二个参数传入长度,对其进行初始化。
步骤2),调用extern unsigned char*CC_MD5(const void *data, CC_LONG len,unsigned char *md)函数,第一个参数传入“入参”(初始“入参”是第一组合密钥),第二个函数传入初始“入参”的长度(即第一组合密钥的长度),第三个参数传入MD5结果数组01,上述函数执行完成后,MD5结果数组01中就有了值,即得到第一运算结果。
结合上述示例,参考图3,假设预设的轮数阈值为3时(此时K=3),对前一轮散列运算得到的运算结果(即MD5结果数组01)和前一轮轮散列运算输入的组合密钥(即第一组合密钥)进行组合,得到组合结果01。在该示例中,可以按照MD5结果数组01+第一组合密钥,或者第一组合密钥+MD5结果数组01的方式进行组合,得到组合结果01。之后,采用MD5对该组合结果进行再次散列运算,得到第二轮运算结果。
接着,对第二轮散列运算得到的第二轮运算结果和第二轮散列运算输入的组合密钥(即组合结果01)进行组合,得到组合结果02。采用MD5对该组合结果进行再次散列运算,得到第三轮运算结果(MD5结果数组03)。此时,散列运算的轮数已经达到预设的轮数阈值,停止散列运算,并根据第三轮运算结果生成目标密钥。
在本申请实施例中,可以将循环调用一个计算逻辑的次数,记录为变量6。例如,循环调用MD5计算逻辑对组合密钥进行散列运算的次数(即循环进行散列运算的轮数)。
在本申请实施例中,关于对前一轮散列运算得到的运算结果和前一轮轮散列运算输入的组合密钥进行组合的组合方式可以是任意的排列组合,可将该组合方式记录为变量7。
在本申请实施例中,通过上述方式对固定密钥和不定密钥进行随机组合,生成第一组合密钥,再对第一组合密钥经上述散列运算处理,有利于显著增加密文数据被破解的难度,提高数据传输的安全性。
在一些实施例中,上述步骤S207,具体包括:
若确定目标对称加密算法设置有初始向量,则基于加密密钥长度和初始向量的长度,对第K轮运算结果进行分割,得到第一分割部分和第二分割部分;
将第一分割部分确定为目标密钥;
将第二分割部分确定为目标初始向量;
基于目标密钥和目标初始向量,对明文数据进行加密,得到密文数据。
在选择目标对称加密算法时,可以一并选择是否有初始向量。是否有初始向量可记录为变量8。如果没有初始向量,则变量8为0。
若是选择的目标对称加密算法有初始向量,则可进一步选择初始向量的长度。初始向量的长度可记录为变量9。
作为一示例,假设经过上述步骤S205得到的是一个32位的散列运算结果,加密密钥长度为16位,初始向量的长度为8位,则将该32位的散列运算结果从第一位开始往后切割,得到第一分割部分(第1-16位的数据)和第二分割部分(第17-24位的数据),剩余的第25-32位的数据丢弃。
具体的实现方式如下:
步骤1),声明一个char数组,指定其长度为变量2,称其为第一部分结果(即第一分割部分)。调用void bzero(void *, size_t)函数,第一个参数传入数组名,第二个参数传入长度,对其进行初始化。
步骤2),声明一个char数组,指定其长度为变量9,称其为第二部分结果(即第二分割部分)。调用void bzero(void *, size_t)函数,第一个参数传入数组名,第二个参数传入长度,对其进行初始化。
步骤3),调用void *memcpy(void *__dst,const void *__src, size_t __n)函数,第一个参数传入第一部分结果,第二个参数传入结果字节数组(即32位的散列运算结果),第三个参数传入长度,即变量2。这个函数执行完成时,第一部分结果就被填充上了结果字节数组的前“变量2”位值,即得到第一分割部分。
步骤4),调用void *memcpy(void *__dst,const void *__src, size_t __n)函数,第一个参数传入第二部分结果,第二个参数传入结果字节数组加变量2,第三个参数传入变量9。这个函数执行完成时,第二部分结果就被填充上了结果字节数组的从第“变量2”位到“变量2”+“变量9”位的值,即得到第二分割部分。
接下来,将上述得到的第一分割部分确定为目标密钥;将第二分割部分确定为目标对称加密算法的目标初始向量。根据选定的目标对称加密算法,使用目标密钥和目标初始向量,对明文数据进行加密,得到密文数据。
作为一示例,以AES加密为例,选择的加密密钥长度为32位,选择的初始向量为:有初始向量,且初始向量的长度是16位。
对明文数据进行加密的主要流程如下:
步骤1),声明一个char数组,指定其长度为业务需求指定的最大长度。调用voidbzero(void *, size_t)函数,第一个参数传入数组名,第二个参数传入长度,对其进行初始化。这个数组用以承载加密后的密文,称为加密字节数组。
步骤2),调用CCCryptorStatusCCCrypt(CCOperation op, CCAlgorithm alg,CCOptions options, const void*key,size_t keyLength,const void *iv, const void*dataIn, size_tdataInLength,void *dataOut, size_t dataOutAvailable,size_t *dataOutMoved)函数,第一个参数传入加密标志位kCCEncrypt;第二个参数传入AES标志位kCCAlgorithmAES;第三个参数传入加密算法选择标志位kCCOptionPKCS7Padding(注意:如果变量8为没有初始向量,则这里还要加上kCCOptionECBMode);第四个参数传入密钥首地址指针,即第一部分结果的数组名;第五个参数传入密钥长度,为标志位kCCKeySizeAES256;第六个参数传入初始向量首地址指针,即即第二部分结果的数组名;第七个参数传入明文的字节数组,大多数HTTP请求下,明文是一个字符串,它的字节数组可由前文描述的根据字符串生成字节数组的方式转换得到;第八个参数传入明文的字节数组的长度;第九个参数传入加密字节数组;第十个参数传入加密字节数组的最大长度;第十一个参数传入一个int类型变量的引用地址。当函数调用完毕后,第九个参数会装载密文,第十一个参数会装载密文的长度。函数的返回值返回加密动作是否成功。
在一些实施例中,上述步骤S208,具体包括:
获取干扰项信息,干扰项信息包括至少一个干扰项,以及每一个干扰项的第一指定长度和第一指定插入位置;
根据第一指定长度和第一指定插入位置,在密文数据中增加第一填充位置,并标记出第一填充位置所对应的干扰项;
将每一个干扰项填充至与之对应的第一填充位置中,得到待传输数据;
将待传输数据传输至服务器。
干扰项,可以是长度随机、内容随机的字节数组,主要用于干扰密文数据的破解者,增加破解者对密文数据的破解难度,有利于进一步提升数据的传输安全性。
干扰项的个数可记录为变量10。每个干扰项的第一指定长度和第一指定插入位置可记录为变量11。
第一指定插入位置,是指将干扰项插入到密文数据中的位置。
作为一示例,可以根据下述步骤生成一个干扰项。
步骤1),调用随机数生成函数,如arc4random_uniform()函数生成干扰项的第一指定长度。
步骤2),声明一个char数组,指定其长度为步骤1)生成的第一指定长度。调用voidbzero(void *, size_t)函数,第一个参数传入数组名,第二个参数传入第一指定长度,对其进行初始化。
步骤3),通过调用CCRNGStatusCCRandomGenerateBytes(void *bytes, size_tcount)方法,第一个参数传入步骤1)中生成的char数组,第一个参数传入步骤1)中的第一指定长度,这个方法调用后,步骤1)中生成的char数组就被填充好了字节,即生成了一个干扰项。
结合图4,假设生成了两个干扰项,分别记为干扰项01、02,干扰项01的第一指定长度01为3位,第一指定插入位置01为密文数据(假设其长度为32位)中的第12-13位之间,干扰项02的第一指定长度02为2位,第一指定插入位置02为密文数据中的第18-19位之间。那么,根据干扰项01、02的第一指定长度01、02和第一指定插入位置01、02,在密文数据中增加第一填充位置01、02,并标记出第一填充位置所对应的干扰项。在此示例中,第一填充位置01对应干扰项01,第一填充位置02对应干扰项02。接下来,将干扰项01填充至第一填充位置01,将干扰项02填充至第一填充位置02,得到待传输数据。
在本申请实施例中,通过在密文数据中插入干扰项,可以进一步提高第三方对密文数据的破解难度,有利于进一步提升数据传输的安全性。
在一些实施例中,将每一个干扰项填充至与之对应的第一填充位置中,得到待传输数据,包括:
获取加密变量信息;
确定加密变量信息的第二指定长度和第二指定插入位置,以及不定密钥的第三指定长度和第三指定插入位置;
根据第二指定长度、第二指定插入位置、第三指定长度和第三指定插入位置,在密文数据中增加第二填充位置和第三填充位置,并标记出第二填充位置所对应的加密变量信息,以及第三填充位置所对应的不定密钥;
将每一个干扰项填充至与之对应的第一填充位置中,将加密变量信息填充至与之对应的第二填充位置中,将不定密钥填充至与之对应的第三填充位置中,得到待传输数据。
加密变量信息,可以是长度随机、内容描述在加密过程中所使用到哪些变量的字节数组。一个变量可对应设置一个长度,且可以插在密文的任何位置。
不定密钥可以直接上传给服务器,因其本身为随机字节流,难以被识别和破解。也可以被加密后再上传至服务器。
一个不定密钥可以插在密文数据中的任何位置。
类似的,加密变量信息的第二指定长度和第二指定插入位置,以及不定密钥的第三指定长度和第三指定插入位置可参照上述干扰项的第一指定长度和第一指定插入位置的确定方式来确定,在此不再赘述。
假设有2个干扰项、一个不定密钥和一个加密变量信息,可参照上述示例,分别确定这2个干扰项、一个不定密钥和一个加密变量信息的指定插入位置,并在密文数据中增加相应的第一填充位置、第二填充位置和第三填充位置,并标记每个填充位置所对应的插入内容。之后,按照标记将各个插入内容插入到第一填充位置、第二填充位置和第三填充位置中,得到待传输数据。
在本申请实施例中,通过在密文数据中进一步插入加密变量信息和不定密钥,可以进一步增加第三方对密文数据的破解难度,有利于提高数据的传输安全性。
此外,还可以在密文数据中的不同位置重复插入加密变量信息和/或不定密钥,以进一步增加第三方对密文数据的破解难度,有利于提高数据的传输安全性。
在本申请实施例中,可以将用到的每个变量的位置和长度,记录为变量12;将不定密钥是否需要加密,及其所选择的加密算法,记录为变量13;将不定密钥插入密文数据中的位置和长度,记录为变量14;将是否删减或重复加密算法中的某个步骤,记录为变量15。
在一些实施例中,若根据业务需求选取了某种变量的组合,并且在选定后长期不需要变换该变量的组合,那么这些变量都是定值,可以不在每次上报/传输密文数据时发送给服务器。在此种情景下,客户端和服务器可采用预先指定的变量组合进行加解密处理即可。
在一些实施例中,为了提高数据传输的安全性和灵活性,这些变量的组合方式可由客户端自由选择,然后执行上述加密步骤得到密文数据,并在每次数据上报时发送给服务器。服务器先读取这些变量,取到对应的值,再根据变量的值进行解密处理。
当然,客户端可以将其选择的变量以字节流的形式存储到密文数据中,每次上报给服务器。
在一优选实施例中,可先将待传输数据进行预处理后,再传输至服务器。预处理包括但不限于:直接转成字符串、base64转换处理、压缩处理等中的至少一种。是否需要进行预处理可由具体的业务需求来确定。
下面以对密文数据进行base64转换处理为例进行详细说明。
步骤1),在iOS的实现中,以HTTP的POST上报数据时,需生成一个NSMutableURLRequest实例,将数据赋值给其HTTPBody属性,该属性是NSData类型。上述步骤获得的密文数据是字节数组,所以存在类型转换操作。
可以直接将字节数组进行转换后赋值,也可以在转换过程中加入“处理”,如base64转换处理后,再赋值。
步骤2),直接将字节数组进行转换的具体实现方式如下:
调用NSData的类方法+(instancetype)dataWithBytes:(nullableconst void *)bytes length:(NSUInteger)length;或初始化方法-(instancetype)initWithBytes:(nullable const void *)byteslength:(NSUInteger)length;及其变体,第一个参数传入字节数组,第二个参数传入数组长度,即可。
步骤3),在转换过程中加入“处理”,如base64转换的具体实现方式如下:
先用步骤2)把字节数组转成NSData类实例,对NSData类实例调用其实例方法-(NSStringbase64EncodedString WithOptions:
(NSDataBase64EncodingOptions)options得到base64字符串。再对字符串调用-(nullable NSData*)dataUsingEncoding:(NSStringEncoding)encoding方法,将其转成NSData实例,赋值给NSMutableURLRequest实例的HTTPBody属性。
在一些实施例中,上述方法还包括:
所述服务器在接收到所述密文数据时,读取所述不定密钥和固定密钥;
根据所述不定密钥和固定密钥,生成目标密钥,所述目标密钥的密钥长度与所述加密密钥长度相同;
基于所述目标对称加密算法,使用所述目标密钥对所述密文数据进行解密,得到明文数据。
作为一示例,假设客户端传输过来的是经过base64转换处理后的密文数据,且在密文数据中插入了加密变量信息和干扰项。那么,服务器在接收到客户端传输过来的上述密文数据时,可先对该密文数据进行base64转换处理的逆处理,得到base64转换前的数据;然后,根据变量12的记录,读取所有变量的值(即加密变量信息的第二指定长度和第二指定插入位置);接着,再根据变量14的记录,获取不定密钥的位置和长度,得到不定密钥的数据内容(若是不定密钥为经过加密后的不定密钥密文,则需要根据变量13的记录,先对不定密钥密文进行解密,得到解密后的不定密钥);之后,再根据变量10和11的记录,去除密文数据中的干扰项;接着,再从本地读取固定密钥;之后,再根据不定密钥和固定密钥,以与上述步骤S204和S205的相同逻辑生成解密需要的密钥(即目标密钥),其中需要使用到变量4、变量5、变量6和变量7;最后,根据变量1、变量2、变量8、变量9的记录,采取与客户端一样的目标对称加密算法进行解密操作,得到真正的数据(即客户端未加密前的明文数据)。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
在一些实施例中,客户端101可以根据具体的业务需求增减或重复上述的某个(或某些)算法步骤。例如,步骤S203、步骤S204可以循环执行多次,生成多个不定密钥,进行多次和固定密钥的组合操作。又例如,步骤S207可以执行多次,对密文数据进行多次加密。
在一些实施例中,可以将每个步骤封装成一个独立的逻辑模块,接受入参数据,处理后吐出被处理好的出参数据。数据加密传输的整个过程类似流水线,上述的独立的逻辑模块可根据业务需求进行自由增减或重复,得到密文数据,再上报给服务器。
图5示出了本申请实施例提供的一种数据加密传输的逻辑模块组装结构示意图。如图5所示,该数据加密传输的逻辑模块组装结构包括:逻辑模块1(对应执行步骤S201)→逻辑模块2(对应执行步骤S202)→逻辑模块3(对应执行步骤S203)→逻辑模块3→逻辑模块4(对应执行步骤S204)→逻辑模块5(对应执行步骤S205)→逻辑模块4(对应执行步骤S204)→逻辑模块5(对应执行步骤S205)→逻辑模块4(对应执行步骤S204)→逻辑模块5(对应执行步骤S205)→逻辑模块6(对应执行步骤S206)→逻辑模块7(对应执行步骤S207)→逻辑模块8(对应执行步骤S208)。
在实际应用中,可针对不同的客户端分别创建与之对应的用于存储数据加密传输算法所用到的逻辑模块及顺序的算法步骤配置文件。通常情况下,为了便于根据客户端的算力、传输的数据量和业务需求,灵活制定加密传输方案,不同的客户端采用不同的算法步骤配置文件。各个客户端根据自己的实际需要,获取到相应的算法步骤配置文件,并搭建起数据加密传输的逻辑模块组装结构,之后,运行该逻辑模块组装结构,得到密文数据并传输给服务器。
在一些实施例中,可以按照下述方式搭建流水式的逻辑模块组装结构。
(1)封装一个逻辑模块父类,称为parentNode。该逻辑模块父类包括成员属性和成员方法,其中成员属性包括入参和出参;成员方法包括2个参数,参数1为入参,参数2为一个回调函数,回调函数的参数里面带有出参(回调函数是逻辑处理完成后调用的)。该成员方法供子类重写实现不同的功能。
分别将每个步骤封装成一个逻辑模块,该逻辑模块继承自parentNode,称其为nodeX。例如,步骤S201对应的逻辑模块1为node1,步骤S202对应的逻辑模块2为node2,步骤S203对应的逻辑模块3为node3,步骤S204对应的逻辑模块4为node4,步骤S205对应的逻辑模块5为node5,步骤S206对应的逻辑模块6为node6,步骤S207对应的逻辑模块7为node7,步骤S208对应的逻辑模块8为node8。
封装参数数据实体类:Data。
由于入参和出参用到的实体不止一个,可以通过成员属性的形式,组织在一个大的数据实体Data下。具体的,成员属性包括:固定密钥源数据、固定密钥字节数组、不定密钥字节数组、对称加密密钥(数组)、对称加密初始向量(数组)、明文字符串、密文字节数组、最终上报数据字符串、最终上报数据字节数组等。
每个node重写parentNode的成员方法,在其中实现自己的逻辑。
例如,node2-node7的成员方法逻辑如下:
①node2的成员方法实现逻辑:
入参:Data,Data的成员变量固定密钥源数据有值;
出参:Data,Data的成员变量固定密钥字节数组有值;
逻辑:通过固定密钥源数据类型,选择固定密钥生成方案,生成固定密钥字节数组,并赋值给Data的对应成员属性。
②node3的成员方法实现逻辑:
入参:Data;
出参:Data, Data的成员变量不定密钥字节数组有值;
逻辑:根据步骤S203的描述,生成不定密钥字节数组,并赋值给Data的对应成员属性。
③node4和node5可以合并成一个逻辑模块,其成员方法实现逻辑如下:
入参:Data,Data的成员变量固定密钥字节数组,不定密钥字节数组有值;
出参:Data,Data的成员变量对称加密密钥,对称加密初始向量有值;
逻辑:根据步骤S204和步骤S205的描述,生成对称加密密钥,对称加密初始向量,并赋值给Data的对应成员属性。
④node6和node7可以合并成一个逻辑模块,其成员方法实现逻辑如下:
入参:Data,Data的成员变量对称加密密钥,对称加密初始向量,密文字节数组,明文字符串有值;
出参:Data,Data的成员变量密文字节数组有值;
逻辑:根据步骤S206和步骤S207的描述,加密明文字符串或者密文字节数组(具体是加密谁看node6和node7是第一次调用还是重复调用),生成生密文数据,并赋值给Data的对应成员属性。
⑤node8的成员方法实现逻辑:
入参:Data,Data的成员变量密文字节数组,固定密钥字节数组,不定密钥字节数组有值;
出参:Data,最终上报数据字符数组,最终上报数据字符串有值;
逻辑:根据步骤S208的描述,组合和处理最终上报数据字节数组,并生成最终上报数据。
在一些实施例中,服务器和客户端可以同时存储一份算法步骤配置文件。
作为一示例,在服务器与APP端进行交互传输数据的场景中,由于APP端数据上报频繁,上报的数据量大,所以其算法步骤可以设置得相对简单一些。例如,其算法步骤可为[node1,node2,node3,node4,node5,node6,node7,node8]。
作为另一示例,在服务器与座舱服务器进行交互传输数据的场景中,由于服务期性能好,计算力强,所以算法步骤可以设置得相对复杂一些,以更好地提高数据传输的安全性。例如,其算法步骤可为[node1,node2,node3,node4,node5,node3,node4,node5,node6,node7,node8]。
在实际应用过程中,算法步骤配置文件可定期或不定期更换,以更好地提升数据传输的安全性。
在执行算法时,客户端可先读取算法步骤配置文件,对节点数组循环遍历;然后,对每个节点调用其算法步骤中描述的成员方法,并将上一个节点的出参Data类实例作为下一个节点的入参。
服务器在接收到客户端传输过来的密文数据后,可通过读取客户端在加密时所采用的所有变量,去除密文数据中的干扰项(如有),读取不定密钥,再从本地读取固定密钥,根据不定密钥和固定密钥生成解密密钥,再采用与客户端使用的相同的目标对称加密算法对密文数据进行解密,得到解密后的数据(即客户端加密前的明文数据)。
本申请实施例提供的技术方案,可适用于客户端与服务器之间的数据传输频繁且数据量大的场景,一方面,采用对称加密算法,提升了加解密的速度,且计算量小,计算时间短,不会耗费太多的计算资源;另一方面,采用固定密钥与不定密钥进行随机组合生成目标密钥,由于不定密钥是每次加密时随机生成的,每次加密都不一样,且固定密钥也可随时更换,因而可有效增加密文数据的破解难度;与此同时,本申请实施例提供的数据加密传输方法可根据业务需求灵活增减和重复其中的某些步骤,支持灵活搭建针对不同客户端的加密传输流水线,适用范围非常广泛,具有较高的推广应用价值。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图6是本申请实施例提供的一种数据加密传输装置的示意图。如图7所示,该数据加密传输装置包括:
确定模块601,被配置为确定目标对称加密算法以及加密密钥长度;
第一生成模块602,被配置为生成或获取固定密钥;
第二生成模块603,被配置为生成不定密钥;
组合模块604,被配置为对固定密钥和不定密钥进行组合,得到第一组合密钥;
密钥生成模块605,被配置为根据第一组合密钥生成目标密钥,目标密钥的密钥长度与加密密钥长度相同;
获取模块606,被配置为获取待传输的明文数据;
加密模块607,被配置为基于目标对称加密算法,使用目标密钥对明文数据进行加密,得到密文数据;
传输模块608,被配置为将密文数据传输至服务器。
本申请实施例提供的技术方案,通过上述方式,一方面,采用对称加密的方式可提升加解密的速度,且无需耗费过多的计算资源;另一方面,采用固定密钥和不定密钥进行组合生成目标密钥,可大大增加密钥被破解的难度,从而可有效防止第三方监听窃取客户端上报/传输的数据,有利于确保用户的数据安全性。
在一些实施例中,上述组合模块604,包括:
第一复制单元,被配置为复制N组固定密钥以及M组不定密钥,N、M均为≥1的正整数;
第一组合单元,被配置为将N组固定密钥和M组不定密钥进行随机组合,得到第一组合密钥。
在另一些实施例中,上述组合模块604,包括:
截取单元,被配置为从固定密钥中截取出第一数据,从不定密钥中截取出第二数据;
第二复制单元,被配置为复制P组第一数据以及Q组第二数据,P、Q均为≥1的正整数;
第二组合单元,被配置为将固定密钥、不定密钥、P组第一数据和Q组第二数据进行随机组合,得到第一组合密钥;或者,将P组第一数据和Q组第二数据进行随机组合,得到第一组合密钥。
在一些实施例中,上述密钥生成模块605,包括:
第一运算单元,被配置为对第一组合密钥进行第一轮散列运算,得到第一运算结果;
第二运算单元,被配置为当针对第一组合密钥进行散列运算的轮数未满足预设的轮数阈值时,对前一轮散列运算得到的运算结果和前一轮轮散列运算输入的组合密钥进行组合,得到组合结果,对组合结果进行再次散列运算,得到第K轮运算结果;
生成单元,被配置为当针对第一组合密钥进行散列运算的轮数满足预设的轮数阈值时,根据第K轮运算结果生成目标密钥;其中,K为≥1的正整数。
在本申请实施例中,通过上述方式对固定密钥和不定密钥进行随机组合,生成第一组合密钥,再对第一组合密钥经上述散列运算处理,有利于显著增加密文数据被破解的难度,提高数据传输的安全性。
在一些实施例中,上述加密模块607,包括:
分割单元,被配置为若确定目标对称加密算法设置有初始向量,则基于加密密钥长度和初始向量的长度,对第K轮运算结果进行分割,得到第一分割部分和第二分割部分;
第一确定单元,被配置为将第一分割部分确定为目标密钥;
第二确定单元,被配置为将第二分割部分确定为目标初始向量;
加密单元,被配置为基于目标密钥和目标初始向量,对明文数据进行加密,得到密文数据。
在一些实施例中,上述传输模块608,包括:
获取单元,被配置为获取干扰项信息,干扰项信息包括至少一个干扰项,以及每一个干扰项的第一指定长度和第一指定插入位置;
增加单元,被配置为根据第一指定长度和第一指定插入位置,在密文数据中增加第一填充位置,并标记出第一填充位置所对应的干扰项;
填充单元,被配置为将每一个干扰项填充至与之对应的第一填充位置中,得到待传输数据;
传输单元,被配置为将待传输数据传输至服务器。
在本申请实施例中,通过在密文数据中插入干扰项,可以进一步提高第三方对密文数据的破解难度,有利于进一步提升数据传输的安全性。
在一些实施例中,上述填充单元,包括:
获取组件,被配置为获取加密变量信息;
确定组件,被配置为确定加密变量信息的第二指定长度和第二指定插入位置,以及不定密钥的第三指定长度和第三指定插入位置;
增加组件,被配置为根据第二指定长度、第二指定插入位置、第三指定长度和第三指定插入位置,在密文数据中增加第二填充位置和第三填充位置,并标记出第二填充位置所对应的加密变量信息,以及第三填充位置所对应的不定密钥;
填充组件,被配置为将每一个干扰项填充至与之对应的第一填充位置中,将加密变量信息填充至与之对应的第二填充位置中,将不定密钥填充至与之对应的第三填充位置中,得到待传输数据。
在本申请实施例中,通过在密文数据中进一步插入加密变量信息和不定密钥,可以进一步增加第三方对密文数据的破解难度,有利于提高数据的传输安全性。
在一些实施例中,上述第一生成模块602,包括:
请求单元,被配置为按照预设时间间隔,向服务器发送获取固定密钥的请求信息,请求信息包括当前使用固定密钥;
覆盖单元,被配置为若接收到服务器返回的消息错误码,消息错误码携带有最新固定密钥,则使用最新固定密钥覆盖当前使用固定密钥;
上述组合模块604,包括:
第三组合单元,被配置为对最新固定密钥和不定密钥进行组合,得到第一组合密钥。
在一些实施例中,上述第一生成模块602,包括:
连接单元,被配置为在与服务器建立起持久化长连接后,接收服务器推送的密钥过期消息,密钥过期消息携带有最新固定密钥;
更新单元,被配置为使用最新固定密钥覆盖当前使用固定密钥;
上述组合模块604,包括:
第四组合单元,被配置为对最新固定密钥和不定密钥进行组合,得到第一组合密钥。
在本申请实施例中,通过定期或不定期更换固定密钥,可使得第三方即使截取到客户端与服务器之间的传输数据,也难以破解该传输数据,从而可提高客户端与服务器之间的数据传输安全性。并且,这让密钥的存储不再成为数据传输安全的薄弱环节。
在一些实施例中,上述第一生成模块602,包括:
数据获取单元,被配置为获取指定字符串或指定文件;
密钥生成单元,被配置为根据指定字符串或指定文件,生成固定密钥。
在一些实施例中,服务器包括:
读取模块,被配置为在接收到所述密文数据时,读取所述不定密钥和固定密钥;
生成模块,被配置为根据所述不定密钥和固定密钥,生成目标密钥,所述目标密钥的密钥长度与所述加密密钥长度相同;
解密模块,被配置为基于所述目标对称加密算法,使用所述目标密钥对所述密文数据进行解密,得到明文数据。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图7是本申请实施例提供的电子设备7的示意图。如图7所示,该实施例的电子设备7包括:处理器701、存储器702以及存储在该存储器702中并且可在处理器701上运行的计算机程序703。处理器701执行计算机程序703时实现上述各个方法实施例中的步骤。或者,处理器701执行计算机程序703时实现上述各装置实施例中各模块/单元的功能。
电子设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等电子设备。电子设备7可以包括但不仅限于处理器701和存储器702。本领域技术人员可以理解,图7仅仅是电子设备7的示例,并不构成对电子设备7的限定,可以包括比图示更多或更少的部件,或者不同的部件。
处理器701可以是中央处理单元(Central Processing Unit,CPU),也可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
存储器702可以是电子设备7的内部存储单元,例如,电子设备7的硬盘或内存。存储器702也可以是电子设备7的外部存储设备,例如,电子设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。存储器702还可以既包括电子设备7的内部存储单元也包括外部存储设备。存储器702用于存储计算机程序以及电子设备所需的其它程序和数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可以存储在计算机可读存储介质中,该计算机程序在被处理器执行时,可以实现上述各个方法实施例的步骤。计算机程序可以包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如,在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (13)

1.一种数据加密传输方法,其特征在于,包括:
确定目标对称加密算法以及加密密钥长度;
生成或获取固定密钥;
生成不定密钥;
对所述固定密钥和不定密钥进行组合,得到第一组合密钥;
根据所述第一组合密钥生成目标密钥,所述目标密钥的密钥长度与所述加密密钥长度相同;
获取待传输的明文数据;
基于所述目标对称加密算法,使用所述目标密钥对所述明文数据进行加密,得到密文数据;
将所述密文数据传输至服务器。
2.根据权利要求1所述的方法,其特征在于,对所述固定密钥和不定密钥进行组合,得到第一组合密钥,包括:
复制N组所述固定密钥以及M组所述不定密钥,N、M均为≥1的正整数;
将N组固定密钥和M组不定密钥进行随机组合,得到第一组合密钥;
或者,
从所述固定密钥中截取出第一数据,从所述不定密钥中截取出第二数据;
复制P组所述第一数据以及Q组所述第二数据,P、Q均为≥1的正整数;
将所述固定密钥、不定密钥、P组第一数据和Q组第二数据进行随机组合,得到第一组合密钥;或者,将P组第一数据和Q组第二数据进行随机组合,得到第一组合密钥。
3.根据权利要求1所述的方法,其特征在于,根据所述第一组合密钥生成目标密钥,包括:
对所述第一组合密钥进行第一轮散列运算,得到第一运算结果;
当针对所述第一组合密钥进行散列运算的轮数未满足预设的轮数阈值时,对前一轮散列运算得到的运算结果和前一轮轮散列运算输入的组合密钥进行组合,得到组合结果,对所述组合结果进行再次散列运算,得到第K轮运算结果;
当针对所述第一组合密钥进行散列运算的轮数满足预设的轮数阈值时,根据第K轮运算结果生成目标密钥;其中,K为≥1的正整数。
4.根据权利要求3所述的方法,其特征在于,基于所述目标对称加密算法,使用所述目标密钥对所述明文数据进行加密,得到密文数据,包括:
若确定所述目标对称加密算法设置有初始向量,则基于所述加密密钥长度和初始向量的长度,对所述第K轮运算结果进行分割,得到第一分割部分和第二分割部分;
将所述第一分割部分确定为目标密钥;
将所述第二分割部分确定为目标初始向量;
基于所述目标密钥和目标初始向量,对所述明文数据进行加密,得到密文数据。
5.根据权利要求1所述的方法,其特征在于,将所述密文数据传输至服务器,包括:
获取干扰项信息,所述干扰项信息包括至少一个干扰项,以及每一个所述干扰项的第一指定长度和第一指定插入位置;
根据所述第一指定长度和第一指定插入位置,在所述密文数据中增加第一填充位置,并标记出所述第一填充位置所对应的干扰项;
将每一个所述干扰项填充至与之对应的第一填充位置中,得到待传输数据;
将所述待传输数据传输至服务器。
6.根据权利要求5所述的方法,其特征在于,将每一个所述干扰项填充至与之对应的第一填充位置中,得到待传输数据,包括:
获取加密变量信息;
确定所述加密变量信息的第二指定长度和第二指定插入位置,以及所述不定密钥的第三指定长度和第三指定插入位置;
根据所述第二指定长度、第二指定插入位置、第三指定长度和第三指定插入位置,在所述密文数据中增加第二填充位置和第三填充位置,并标记出所述第二填充位置所对应的加密变量信息,以及第三填充位置所对应的不定密钥;
将每一个所述干扰项填充至与之对应的第一填充位置中,将所述加密变量信息填充至与之对应的第二填充位置中,将所述不定密钥填充至与之对应的第三填充位置中,得到待传输数据。
7.根据权利要求1所述的方法,其特征在于,获取固定密钥,包括:
按照预设时间间隔,向服务器发送获取固定密钥的请求信息,所述请求信息包括当前使用固定密钥;
若接收到所述服务器返回的消息错误码,所述消息错误码携带有最新固定密钥,则使用所述最新固定密钥覆盖所述当前使用固定密钥;
对所述固定密钥和不定密钥进行组合,得到第一组合密钥,包括:
对所述最新固定密钥和不定密钥进行组合,得到第一组合密钥。
8.根据权利要求1所述的方法,其特征在于,获取固定密钥,包括:
在与服务器建立起持久化长连接后,接收服务器推送的密钥过期消息,所述密钥过期消息携带有最新固定密钥;
使用所述最新固定密钥覆盖当前使用固定密钥;
对所述固定密钥和不定密钥进行组合,得到第一组合密钥,包括:
对所述最新固定密钥和不定密钥进行组合,得到第一组合密钥。
9.根据权利要求1所述的方法,其特征在于,生成固定密钥,包括:
获取指定字符串或指定文件;
根据所述指定字符串或指定文件,生成固定密钥。
10.根据权利要求1~9任一项所述的方法,其特征在于,所述方法还包括:
所述服务器在接收到所述密文数据时,读取所述不定密钥和固定密钥;
根据所述不定密钥和固定密钥,生成目标密钥,所述目标密钥的密钥长度与所述加密密钥长度相同;
基于所述目标对称加密算法,使用所述目标密钥对所述密文数据进行解密,得到明文数据。
11.一种数据加密传输装置,其特征在于,包括:
确定模块,被配置为确定目标对称加密算法以及加密密钥长度;
第一生成模块,被配置为生成或获取固定密钥;
第二生成模块,被配置为生成不定密钥;
组合模块,被配置为对所述固定密钥和不定密钥进行组合,得到第一组合密钥;
密钥生成模块,被配置为根据所述第一组合密钥生成目标密钥,所述目标密钥的密钥长度与所述加密密钥长度相同;
获取模块,被配置为获取待传输的明文数据;
加密模块,被配置为基于所述目标对称加密算法,使用所述目标密钥对所述明文数据进行加密,得到密文数据;
传输模块,被配置为将所述密文数据传输至服务器。
12.一种电子设备,包括存储器、处理器以及存储在所述存储器中并且可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至10中任一项所述方法的步骤。
13.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至10中任一项所述方法的步骤。
CN202310552975.4A 2023-05-17 2023-05-17 一种数据加密传输方法、装置、电子设备及存储介质 Active CN116318686B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310552975.4A CN116318686B (zh) 2023-05-17 2023-05-17 一种数据加密传输方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310552975.4A CN116318686B (zh) 2023-05-17 2023-05-17 一种数据加密传输方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN116318686A true CN116318686A (zh) 2023-06-23
CN116318686B CN116318686B (zh) 2023-09-05

Family

ID=86794495

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310552975.4A Active CN116318686B (zh) 2023-05-17 2023-05-17 一种数据加密传输方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116318686B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108880785A (zh) * 2018-05-25 2018-11-23 武汉斗鱼网络科技有限公司 一种检测C++虚表被hook的方法、装置、终端及可读介质
CN111597574A (zh) * 2020-04-16 2020-08-28 南通职业大学 一种基于空间扩散结构的并行图像加密系统及方法
CN112202754A (zh) * 2020-09-25 2021-01-08 中国建设银行股份有限公司 一种数据加密方法、装置、电子设备及存储介质
CN112751852A (zh) * 2020-12-29 2021-05-04 平安普惠企业管理有限公司 数据传输方法及相关设备
CN113824553A (zh) * 2020-06-19 2021-12-21 华为技术有限公司 密钥管理方法、装置及系统
CN114239073A (zh) * 2021-12-30 2022-03-25 天翼物联科技有限公司 自适应加密方法、装置、设备及介质
US20220109566A1 (en) * 2019-02-18 2022-04-07 Jilin University Encryption And Decryption Method And Device Based On Random Hash And Bit Operation
CN114679319A (zh) * 2022-03-25 2022-06-28 南京邮电大学 基于区块链的分布式数据同步加密方法
CN115333727A (zh) * 2022-07-13 2022-11-11 中国电信股份有限公司 一种密钥生成方法和装置
WO2022252632A1 (zh) * 2021-06-01 2022-12-08 平安科技(深圳)有限公司 一种数据加密处理方法、装置、计算机设备及存储介质
CN115603907A (zh) * 2022-10-13 2023-01-13 北京三快在线科技有限公司(Cn) 加密存储数据的方法、装置、设备和存储介质
CN116132041A (zh) * 2023-02-22 2023-05-16 网易(杭州)网络有限公司 密钥处理方法、装置、存储介质及电子设备

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108880785A (zh) * 2018-05-25 2018-11-23 武汉斗鱼网络科技有限公司 一种检测C++虚表被hook的方法、装置、终端及可读介质
US20220109566A1 (en) * 2019-02-18 2022-04-07 Jilin University Encryption And Decryption Method And Device Based On Random Hash And Bit Operation
CN111597574A (zh) * 2020-04-16 2020-08-28 南通职业大学 一种基于空间扩散结构的并行图像加密系统及方法
CN113824553A (zh) * 2020-06-19 2021-12-21 华为技术有限公司 密钥管理方法、装置及系统
CN112202754A (zh) * 2020-09-25 2021-01-08 中国建设银行股份有限公司 一种数据加密方法、装置、电子设备及存储介质
CN112751852A (zh) * 2020-12-29 2021-05-04 平安普惠企业管理有限公司 数据传输方法及相关设备
WO2022252632A1 (zh) * 2021-06-01 2022-12-08 平安科技(深圳)有限公司 一种数据加密处理方法、装置、计算机设备及存储介质
CN114239073A (zh) * 2021-12-30 2022-03-25 天翼物联科技有限公司 自适应加密方法、装置、设备及介质
CN114679319A (zh) * 2022-03-25 2022-06-28 南京邮电大学 基于区块链的分布式数据同步加密方法
CN115333727A (zh) * 2022-07-13 2022-11-11 中国电信股份有限公司 一种密钥生成方法和装置
CN115603907A (zh) * 2022-10-13 2023-01-13 北京三快在线科技有限公司(Cn) 加密存储数据的方法、装置、设备和存储介质
CN116132041A (zh) * 2023-02-22 2023-05-16 网易(杭州)网络有限公司 密钥处理方法、装置、存储介质及电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
星辰流炎: "总结DES、3DES、AES、SM加密算法", Retrieved from the Internet <URL:CSDN博客> *
漆世钱: "基于VC++的DES加密算法实现", 自动化技术与应用, vol. 33, no. 12, pages 25 - 27 *

Also Published As

Publication number Publication date
CN116318686B (zh) 2023-09-05

Similar Documents

Publication Publication Date Title
CN110933118B (zh) 边缘计算网关安全通信方法、系统、终端设备及服务器
CN107888656B (zh) 服务端接口的调用方法和调用装置
CN112202754B (zh) 一种数据加密方法、装置、电子设备及存储介质
CN113132394B (zh) 一种请求处理系统、方法、装置、存储介质及电子设备
CN112235104B (zh) 一种数据加密传输方法、系统、终端及存储介质
CN116015767A (zh) 一种数据处理方法、装置、设备及介质
CN111246407B (zh) 用于短信传输的数据加密、解密方法及装置
CN111181920A (zh) 一种加解密的方法和装置
CN109302425B (zh) 身份认证方法及终端设备
CN114785524A (zh) 电子印章生成方法、装置、设备和介质
CN112560003A (zh) 用户权限管理方法和装置
CN109120576B (zh) 数据分享方法及装置、计算机设备及存储介质
CN116455572B (zh) 数据加密方法、装置及设备
US10944732B2 (en) Streaming digital content with content metadata
CN108055356A (zh) 一种信息处理方法、服务器、客户端及可读存储介质
CN116743481A (zh) 服务安全管控方法、装置、设备及存储介质
CN116781425A (zh) 一种业务数据获取方法、装置、设备及存储介质
CN116318686B (zh) 一种数据加密传输方法、装置、电子设备及存储介质
CN115567263A (zh) 一种数据传输管理的方法、数据处理的方法和装置
CN109218009A (zh) 一种提高设备id安全性的方法、客户端和服务器
CN115277225A (zh) 一种数据加密方法、解密方法及相关设备
CN113761566A (zh) 一种数据处理方法和装置
Ciobanu et al. SCONeP: Steganography and Cryptography approach for UDP and ICMP
CN116866029B (zh) 随机数加密数据传输方法、装置、计算机设备及存储介质
CN114726564B (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
TR01 Transfer of patent right

Effective date of registration: 20240117

Address after: No. 13 Xingxiang Road, Zengjia Town, High tech Zone, Shapingba District, Chongqing, 400039

Patentee after: Chongqing Selis Phoenix Intelligent Innovation Technology Co.,Ltd.

Address before: 610095 No. 2901, floor 29, unit 1, building 1, No. 151, Tianfu Second Street, high tech Zone, China (Sichuan) pilot Free Trade Zone, Chengdu, Sichuan Province

Patentee before: Chengdu Thalys Technology Co.,Ltd.

TR01 Transfer of patent right