CN115623087A - 一种解析pb格式流通数据的方法及系统 - Google Patents
一种解析pb格式流通数据的方法及系统 Download PDFInfo
- Publication number
- CN115623087A CN115623087A CN202211451786.XA CN202211451786A CN115623087A CN 115623087 A CN115623087 A CN 115623087A CN 202211451786 A CN202211451786 A CN 202211451786A CN 115623087 A CN115623087 A CN 115623087A
- Authority
- CN
- China
- Prior art keywords
- data
- result
- signature
- address
- identifier
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/06—Notations for structuring of protocol data, e.g. abstract syntax notation one [ASN.1]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种解析PB格式流通数据的方法及系统,包括:终端对从缓存中提取的待签名数据设置起始标识与结束标识;调用预设函数对待签名数据进行拆分处理获得拆分结果,根据拆分结果中的参数数据长度分别对起始标识与结束标识对进行更新,获得更新后的起始标识与更新后的结束标识;终端生成签名请求并发送给终端连接的硬件设备,当硬件设备接收到签名结果获取请求时对签名请求进行解析,根据解析结果中的参数数据确定待显示数据并显示;硬件设备根据从签名请求中解析出的私钥派生地址生成私钥,利用私钥对从签名请求中解析出的待签名数据进行签名处理。采用上述方法,硬件设备能够对PB格式流通数据进行快速解析,继而实现所见即所签。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种解析PB格式流通数据的方法及系统。
背景技术
Protocol Buffers是一种高效结构化数据存储方法,简称Protobuf或PB。
Protocol Buffers使用方法是:
1.制定.proto文件,自定义消息格式;
2.使用protoc工具,通过PB编译器生成所需语言的自定义消息类。
使用PB编译器生成的自定义消息类对信息进行序列化和反序列化。
在数据流通介质中,有些介质所使用的数据流通编码格式为PB格式的,因此,需要实现对PB的解析,以便在硬件设备上实现所见即所签。
然而,当前的硬件设备还无法做到对PB格式的流通数据进行解析。如何提供一种解析方法从而使得PB格式的流通数据能在硬件设备上实现所见即所签成为亟待解决的技术问题。
发明内容
本申请实施例提供了一种解析PB格式流通数据的方法及系统。所述技术方案如下:
第一方面,本申请实施例提供了一种解析PB格式流通数据的方法,所述方法包括:
步骤S1:终端接收用户触发的操作指令并从缓存中提取待签名数据,根据所述待签名数据的数据长度对所述待签名数据设置第一起始标识与第一结束标识;
步骤S2:所述终端调用预设的第一函数对所述待签名数据进行第一拆分处理,获得第一拆分结果,所述第一拆分结果包含区块字节、区块哈希、超时时间、合约数据以及时间戳五项数据;
步骤S3:所述终端计算所述第一拆分结果中的区块字节、区块哈希以及超时时间三项数据总长度,基于所述三项数据总长度对所述第一起始标识进行更新,获得第二起始标识;
步骤S4:所述终端计算所述第一拆分结果中的时间戳数据总长度,基于所述时间戳数据总长度对所述第一结束标识进行更新,获得第二结束标识;
步骤S5:所述终端调用预设的第二函数对所述第一拆分结果中的合约数据进行第二拆分处理,获得第二拆分结果,所述第二拆分结果包含合约类型与合约参数两项数据;
步骤S6:所述终端计算所述第二拆分结果中的合约类型数据总长度,基于所述合约数据的标签字段、所述合约数据的合约长度字段以及所述合约类型数据总长度对所述第二起始标识进行更新,获得第三起始标识;
步骤S7:所述终端调用预设的第三函数对所述第二拆分结果中的合约参数进行第三拆分处理,获得第三拆分结果,所述第三拆分结果包含参数类型与参数数据两项数据;
步骤S8:所述终端根据所述第三拆分结果中的参数类型确定实际被调用函数,并判断所述实际被调用函数是否与所述操作指令相对应,若是,执行步骤S9,否则,报错,结束;
步骤S9:所述终端计算所述第三拆分结果中的参数类型数据总长度,基于所述合约参数的标签字段、所述合约参数的参数长度字段以及所述参数类型数据总长度对所述第三起始标识进行更新,获得第四起始标识;
步骤S10:所述终端获取与所述实际被调用函数相对应的第四函数,利用所述第四函数对所述第三拆分结果中的参数数据进行拆分处理,获得第四拆分结果,所述第四拆分结果中包含至少三项数据;
步骤S11:所述终端计算所述第四拆分结果中第一目标数据的数据长度,基于所述第一目标数据的数据长度对所述第四起始标识进行更新,获得第五起始标识;
步骤S12:所述终端计算所述第四拆分结果中第二目标数据的实际数据长度,基于所述第二目标数据的实际数据长度对所述第二结束标识进行更新,获得第三结束标识;
步骤S13:所述终端获取预置的目标签名指令头,并计算所述第四拆分结果中待显示数据的实际数据长度,根据所述待签名数据、目标签名指令头、所述第五起始标识、所述第三结束标识、所述待显示数据的实际数据长度生成签名请求,将所述签名请求发送给所述终端连接的硬件设备;
步骤S14:所述硬件设备保存所述签名请求,并等待接收所述终端发送的签名结果获取请求;
步骤S15:当接收到所述签名结果获取请求时,所述硬件设备对所述签名请求进行解析,根据解析结果中的第五起始标识、第三结束标识以及待显示数据的实际数据长度从解析结果中的待签名数据中确定待显示数据;
步骤S16:所述硬件设备对所述待显示数据进行显示;
步骤S17:所述硬件设备根据从所述签名请求中解析出的私钥派生地址生成私钥,利用所述私钥对从所述签名请求中解析出的待签名数据进行签名处理,并将签名结果返回给所述终端。
第二方面,本申请实施例提供了一种解析PB格式流通数据的系统,所述系统包括:
标识设置模块,用于接收用户触发的操作指令并从缓存中提取待签名数据,根据所述待签名数据的数据长度对所述待签名数据设置第一起始标识与第一结束标识;
数据拆分模块,用于调用预设的第一函数对所述待签名数据进行第一拆分处理,获得第一拆分结果,所述第一拆分结果包含区块字节、区块哈希、超时时间、合约数据以及时间戳五项数据;
标识更新模块,用于计算所述第一拆分结果中的区块字节、区块哈希以及超时时间三项数据总长度,基于所述三项数据总长度对所述第一起始标识进行更新,获得第二起始标识;
所述标识更新模块,还用于计算所述第一拆分结果中的时间戳数据总长度,基于所述时间戳数据总长度对所述第一结束标识进行更新,获得第二结束标识;
所述数据拆分模块,还用于调用预设的第二函数对所述第一拆分结果中的合约数据进行第二拆分处理,获得第二拆分结果,所述第二拆分结果包含合约类型与合约参数两项数据;
所述标识更新模块,还用于计算所述第二拆分结果中的合约类型数据总长度,基于所述合约数据的标签字段、所述合约数据的合约长度字段以及所述合约类型数据总长度对所述第二起始标识进行更新,获得第三起始标识;
所述数据拆分模块,还用于调用预设的第三函数对所述第二拆分结果中的合约参数进行第三拆分处理,获得第三拆分结果,所述第三拆分结果包含参数类型与参数数据两项数据;
函数确定模块,用于根据所述第三拆分结果中的参数类型确定实际被调用函数,并判断所述实际被调用函数是否与所述操作指令相对应,若是,触发所述标识更新模块,否则,报错,结束;
所述标识更新模块,还用于计算所述第三拆分结果中的参数类型数据总长度,基于所述合约参数的标签字段、所述合约参数的参数长度字段以及所述参数类型数据总长度对所述第三起始标识进行更新,获得第四起始标识;
所述数据拆分模块,还用于获取与所述实际被调用函数相对应的第四函数,利用所述第四函数对所述第三拆分结果中的参数数据进行拆分处理,获得第四拆分结果,所述第四拆分结果中包含至少三项数据;
所述标识更新模块,还用于计算所述第四拆分结果中第一目标数据的数据长度,基于所述第一目标数据的数据长度对所述第四起始标识进行更新,获得第五起始标识;
所述标识更新模块,还用于计算所述第四拆分结果中第二目标数据的实际数据长度,基于所述第二目标数据的实际数据长度对所述第二结束标识进行更新,获得第三结束标识;
请求生成模块,用于获取预置的目标签名指令头,并计算所述第四拆分结果中待显示数据的实际数据长度,根据所述待签名数据、目标签名指令头、所述第五起始标识、所述第三结束标识、所述待显示数据的实际数据长度生成签名请求,将所述签名请求发送给请求接收模块;
所述请求接收模块,用于保存所述签名请求,并等待接收签名结果获取请求;
数据确定模块,用于当接收到所述签名结果获取请求时,对所述签名请求进行解析,根据解析结果中的第五起始标识、第三结束标识以及待显示数据的实际数据长度从解析结果中的待签名数据中确定待显示数据;
数据显示模块,用于对所述待显示数据进行显示;
签名处理模块,用于根据从所述签名请求中解析出的私钥派生地址生成私钥,利用所述私钥对从所述签名请求中解析出的待签名数据进行签名处理,并将签名结果返回。
第三方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项方法的步骤。
第四方面,本申请实施例提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任一项方法的步骤。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
本申请利用终端的高处理性能对待签名数据(PB格式)进行处理,将处理结果与待签名数据一同发送到硬件设备上,硬件设备根据终端发送的处理数据从待签名数据中找到待显示的数据并显示在屏幕上。采用上述方法,硬件设备能够对PB格式流通数据进行快速解析,继而实现所见即所签。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种解析PB格式流通数据的方法的流程示意图;
图2至图3是本申请实施例提供的另一种解析PB格式流通数据的方法的流程示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是如所附权利要求书中所详述的、本申请的一些方面相一致的系统和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
下面将结合附图1-附图3,对本申请实施例提供的对PB格式的流通数据实现所见即所签的方法进行详细介绍。
请参见图1,为本申请实施例提供的一种解析PB格式流通数据的方法的流程示意图。
如图1所示,本申请实施例的所述方法可以包括以下步骤:
步骤SA-1:终端接收用户触发的操作指令并从缓存中提取待签名数据,根据待签名数据的数据长度对待签名数据设置第一起始标识与第一结束标识;
步骤SA-2:终端调用预设的第一函数对待签名数据进行第一拆分处理,获得第一拆分结果,第一拆分结果包含区块字节、区块哈希、超时时间、合约数据以及时间戳五项数据;
步骤SA-3:终端计算第一拆分结果中的区块字节、区块哈希以及超时时间三项数据总长度,基于三项数据总长度对第一起始标识进行更新,获得第二起始标识;
步骤SA-4:终端计算第一拆分结果中的时间戳数据总长度,基于时间戳数据总长度对第一结束标识进行更新,获得第二结束标识;
步骤SA-5:终端调用预设的第二函数对第一拆分结果中的合约数据进行第二拆分处理,获得第二拆分结果,第二拆分结果包含合约类型与合约参数两项数据;
步骤SA-6:终端计算第二拆分结果中的合约类型数据总长度,基于合约数据的标签字段、合约数据的合约长度字段以及合约类型数据总长度对第二起始标识进行更新,获得第三起始标识;
步骤SA-7:终端调用预设的第三函数对第二拆分结果中的合约参数进行第三拆分处理,获得第三拆分结果,第三拆分结果包含参数类型与参数数据两项数据;
步骤SA-8:终端根据第三拆分结果中的参数类型确定实际被调用函数,并判断实际被调用函数是否与用户触发的操作指令相对应,若是,执行步骤SA-9,否则,报错,结束;
步骤SA-9:终端计算第三拆分结果中的参数类型数据总长度,基于合约参数的标签字段、合约参数的参数长度字段以及参数类型数据总长度对第三起始标识进行更新,获得第四起始标识;
步骤SA-10:终端获取与实际被调用函数相对应的第四函数,利用第四函数对第三拆分结果中的参数数据进行拆分处理,获得第四拆分结果,第四拆分结果中包含至少三项数据;
步骤SA-11:终端计算第四拆分结果中第一目标数据的数据长度,基于第一目标数据的数据长度对第四起始标识进行更新,获得第五起始标识;
步骤SA-12:终端计算第四拆分结果中第二目标数据的实际数据长度,基于第二目标数据的实际数据长度对第二结束标识进行更新,获得第三结束标识;
步骤SA-13:终端获取预置的目标签名指令头,并计算第四拆分结果中待显示数据的实际数据长度,根据待签名数据、目标签名指令头、第五起始标识、第三结束标识、待显示数据的实际数据长度生成签名请求,将签名请求发送给终端连接的硬件设备;
步骤SA-14:硬件设备保存签名请求,并等待接收终端发送的签名结果获取请求;
步骤SA-15:当接收到签名结果获取请求时,硬件设备对签名请求进行解析,根据解析结果中的第五起始标识、第三结束标识以及待显示数据的实际数据长度从解析结果中的待签名数据中确定待显示数据;
步骤SA-16:硬件设备对待显示数据进行显示;
步骤SA-17:硬件设备根据从签名请求中解析出的私钥派生地址生成私钥,利用私钥对从签名请求中解析出的待签名数据进行签名处理,并将签名结果返回给终端。
本申请利用终端的高处理性能对待签名数据(PB格式)进行处理,将处理结果与待签名数据一同发送到硬件设备上,硬件设备根据终端发送的处理数据从待签名数据中找到待显示的数据并显示在屏幕上。采用上述方法,硬件设备能够对PB格式流通数据进行快速解析,继而实现所见即所签。
请参见图2-图3,为本申请实施例提供的一种解析PB格式流通数据的方法的流程示意图,所示示意图是地址冻结操作下的待签名数据处理流程。
如图2-图3所示,本申请实施例的所述方法可以包括以下步骤:
步骤S1:终端接收用户触发的地址冻结操作指令并从缓存中提取待签名数据,根据待签名数据的数据长度对待签名数据设置第一起始标识与第一结束标识。
待签名数据例如为:
0a0223bc22082b72b05b7674b2574090f288f7d42e5a6f080b126b0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412350a15412951299aca154f795560460308861fce0f94875a108827180350017a1541dcb7323a9385914c66daa0d0c94b3d58764c889170a5b885f7d42e。
上述待签名数据的数据长度为141字节。
根据上述待签名数据的数据长度对待签名数据设置的第一起始标识为0,第一结束标识为141。
详尽地,在步骤S1之前,还包括:
终端将待签名数据保存至缓存中;
终端与硬件设备建立连接并完成密码认证。
其中,终端与硬件设备之间建立连接的方式包括但不限于蓝牙连接。
步骤S2:终端调用预设的签名数据处理函数对待签名数据进行第一拆分处理,获得第一拆分结果,第一拆分结果包含区块字节、区块哈希、超时时间、合约数据以及时间戳五项数据。
其中,预设的签名数据处理函数为raw函数,该函数内包含的全部数据的标签定义例如为:
message raw {
bytes ref_block_bytes = 1;
int64 ref_block_num = 3;
bytes ref_block_hash = 4;
int64 expiration = 8;
repeated authority auths = 9;
bytes data = 10;
repeated Contract contract = 11;
bytes scripts = 12;
int64 timestamp = 14;
int64 fee_limit = 18;}
在使用raw函数进行拆分处理时,最多只能拆分出上述所列数据类型。
其中,等号后面的数字代表该数据所代表的含义所对应的标签,如果拆分出除这些数字之外的标签,则表示当前数据错误,无法继续处理,报错并结束。
步骤S1中的待签名数据实例经上述签名数据处理函数拆分处理后,获得的第一拆分结果如下:
0a0223bc
22082b72b05b7674b257
4090f288f7d42e
5a6f080b126b0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412350a15412951299aca154f795560460308861fce0f94875a108827180350017a1541dcb7323a9385914c66daa0d0c94b3d58764c8891
70a5b885f7d42e
其中,0a0223bc为区块字节,22082b72b05b7674b257为区块哈希,4090f288f7d42e为超时时间,5a6f080b126b0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412350a15412951299aca154f795560460308861fce0f94875a108827180350017a1541dcb7323a9385914c66daa0d0c94b3d58764c8891为合约数据,70a5b885f7d42e为时间戳。
以时间戳数据为例对raw函数的拆分处理进行说明:
时间戳数据中,70是标签,为16进制,转换为二进制是01110000,将这8位二进制数分成前5位和后3位,前5位为01110,后3位为000,换算为十进制,前5位为14,后3位为0,后3位的0代表时间戳的数据类型。
根据raw函数的标签定义可以找到数字14对应的是int64 timestamp;timestamp为时间戳;根据PB官方定义,0代表的类型有int32、int64、uint32、uint64、sint32、sint64、bool以及enum,在PB中这些类型的数据彼此兼容,因此可知标签70在当前的拆分步骤中代表的是int64类型的时间戳数据。
此外,攻击者可能会向待签名数据额外塞入新的数据以更改原始数据继而达到数据转移的目的,给用户造成损失。
为防止待签名数据被篡改,更进一步地,终端在获得第一拆分结果之后,还包括如下处理动作:
判断第一拆分结果是否符合签名数据处理函数的函数结构,若是,则执行步骤S3,否则,报错,结束。
当攻击者向待签名数据额外塞入新的数据时,会出现数据结构不符合函数要求的情况。因此,在调用签名数据处理函数对待签名数据进行拆分后,增加数据结构判断,判断拆分后的数据结构是否符合签名数据处理函数的函数结构,若符合,则待签名数据当前未被攻击篡改,执行步骤S3,若不符合,则待签名数据已被攻击篡改,报错,结束。
具体的,签名数据处理函数由区块字节、区块哈希、超时时间、合约数据、时间戳五部分构成,当第一拆分结果同样包含这五部分内容时,则认为第一拆分结果符合签名数据处理函数的函数结构。
步骤S3:终端计算第一拆分结果中的区块字节、区块哈希以及超时时间三项数据总长度,基于三项数据总长度对第一起始标识进行更新,获得第二起始标识。
基于步骤S2中的实例,第一拆分结果中的区块字节数据总长度为4字节、区块哈希数据总长度为10字节、超时时间数据总长度为7字节,进行求和运算得三项数据总长度为21字节。
根据三项数据总长度,将第一起始标识0向后移动21字节获得第二起始标识21,也就是将起始标识从区块字节0a0223bc之前挪动至超时时间4090f288f7d42e之后。
步骤S4:终端计算第一拆分结果中的时间戳数据总长度,基于时间戳数据总长度对第一结束标识进行更新,获得第二结束标识。
基于步骤S2中的实例,第一拆分结果中的时间戳数据总长度为7字节。
根据时间戳数据总长度,将第一结束标识141向前移动7字节获得第二结束标识134,也就是将结束标识从时间戳70a5b885f7d42e之后挪动至合约数据5a6f080b126b0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412350a15412951299aca154f795560460308861fce0f94875a108827180350017a1541dcb7323a9385914c66daa0d0c94b3d58764c8891之后。
步骤S5:终端调用预设的合约数据处理函数对第一拆分结果中的合约数据进行第二拆分处理,获得第二拆分结果,第二拆分结果包含合约类型与合约参数两项数据。
其中,合约数据处理函数内包含的全部数据的标签定义例如为:
message Contract {
ContractType type = 1;
google.protobuf.Any parameter = 2;
bytes provider = 3;
bytes ContractName = 4;
int32 Permission_id = 5;}
对上述合约数据实例经上述合约数据处理函数拆分处理后,获得的第二拆分结果如下:
080b
126b0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412350a15412951299aca154f795560460308861fce0f94875a108827180350017a1541dcb7323a9385914c66daa0d0c94b3d58764c8891
其中,080b为合约类型,126b0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412350a15412951299aca154f795560460308861fce0f94875a108827180350017a1541dcb7323a9385914c66daa0d0c94b3d58764c8891为合约参数。
攻击者可能在任意时刻攻击篡改待签名数据,为防止待签名数据被篡改,在每次调用函数对数据作拆分处理后,均需对拆分后的数据结构进行判断。
具体的,终端在获得第二拆分结果之后,还包括如下处理动作:
判断第二拆分结果是否符合合约数据处理函数的函数结构,若是,则执行步骤S6,否则,报错,结束。
步骤S6:终端计算第二拆分结果中的合约类型数据总长度,基于合约数据的标签字段、合约数据的合约长度字段以及合约类型数据总长度对第二起始标识进行更新,获得第三起始标识。
第二拆分结果中的合约类型数据总长度为2字节、合约数据的标签字段为1字节、合约数据的合约长度字段为1字节。
根据合约数据的标签字段(上述数据实例中的080b)、合约数据的合约长度字段(上述数据实例中的126b)以及合约类型数据总长度,将第二起始标识21向后移动4字节获得第三起始标识25,也就是将起始标识从超时时间4090f288f7d42e之后挪动至合约类型080b之后。
步骤S7:终端调用预设的合约参数处理函数对第二拆分结果中的合约参数进行第三拆分处理,获得第三拆分结果,第三拆分结果包含参数类型与参数数据两项数据。
其中,合约参数处理函数内包含的全部数据的标签定义例如为:
message Any{
String type_url = 1;
Bytes value = 2;}
对上述合约参数实例经上述合约参数处理函数拆分处理后,获得的第三拆分结果如下:
0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e7472616374
12350a15412951299aca154f795560460308861fce0f94875a108827180350017a1541dcb7323a9385914c66daa0d0c94b3d58764c8891
其中,0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e7472616374为参数类型,12350a15412951299aca154f795560460308861fce0f94875a108827180350017a1541dcb7323a9385914c66daa0d0c94b3d58764c8891为参数数据。
终端在获得第三拆分结果之后,还包括如下处理动作:
判断第三拆分结果是否符合合约参数处理函数的函数结构,若是,则执行步骤S8,否则,报错,结束。
步骤S8:终端根据第三拆分结果中的参数类型确定实际被调用函数,并判断实际被调用函数是否与用户触发的操作指令相对应,若是,执行步骤S9,否则,报错,结束。
参数类型由标签1字节、数据长度数值1字节、实际数据3部分组成。
根据参数类型的实际数据,可知参数数据实际调用的函数。
通过上述实例中的0a32可知具体的操作,从终端内部存储的对应关系中可确定出该操作对应的实际被调用函数。
本实施例中用户触发的操作指令为地址冻结操作指令。
步骤S9:终端计算第三拆分结果中的参数类型数据总长度,基于合约参数的标签字段、合约参数的参数长度字段以及参数类型数据总长度对第三起始标识进行更新,获得第四起始标识。
第三拆分结果中的参数类型数据总长度为52字节、合约参数的标签字段为1字节、合约参数的参数长度字段为1字节。
根据合约参数的标签字段(上述数据实例中的0a)、合约参数的参数长度字段(上述数据实例中的32)以及参数类型数据总长度,将第三起始标识25向后移动54字节获得第四起始标识79,也就是将起始标识从合约类型080b之后挪动至参数类型0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e7472616374之后。
步骤S10:终端获取与实际被调用函数相对应的参数数据处理函数,利用参数数据处理函数对第三拆分结果中的参数数据进行拆分处理,获得第四拆分结果,第四拆分结果包含发起者地址、地址数据余量、冻结时长、资源数据以及接收者地址五项数据。
不同的实际被调用函数对应不同的参数数据处理函数。
本实施例中实际被调用函数对应的参数数据处理函数内包含的全部数据的标签定义例如为:
message FreezeBalanceContract {
bytes owner_address = 1;
int64 frozen_balance = 2;
int64 frozen_duration = 3;
ResourceCode resource = 10;
bytes receiver_address = 15;}
对上述参数数据实例经上述参数数据处理函数拆分处理后,获得的第四拆分结果如下:
0a15412951299aca154f795560460308861fce0f94875a
108827
1803
5001
7a1541dcb7323a9385914c66daa0d0c94b3d58764c8891
其中,0a15412951299aca154f795560460308861fce0f94875a 为发起者地址,108827为地址数据余量(其中,10为地址数据余量的标签字段,8827为地址数据余量的实际数据),1803为冻结时长,5001为资源数据,7a1541dcb7323a9385914c66daa0d0c94b3d58764c8891为接收者地址(其中,7a为接收者地址的标签字段,15为接收者地址的长度字段,41dcb7323a9385914c66daa0d0c94b3d58764c8891为接收者地址的实际数据)。
终端在获得第四拆分结果之后,还包括如下处理动作:
判断第四拆分结果是否符合参数数据处理函数的函数结构,若是,则执行步骤S11,否则,报错,结束。
步骤S11:终端计算第四拆分结果中的发起者地址数据总长度,基于参数数据的标签字段、参数数据的参数长度字段、发起者地址数据总长度以及地址数据余量的标签字段对第四起始标识进行更新,获得第五起始标识。
其中,参数数据的标签字段为1字节、参数数据的参数长度字段为1字节,第四拆分结果中的发起者地址数据总长度为23字节、地址数据余量的标签字段为1字节。
根据参数数据的标签字段(上述数据实例中的12)、参数数据的参数长度字段(上述数据实例中的35)、发起者地址数据总长度以及地址数据余量的标签字段(上述实例108827中的10),将第四起始标识79向后移动26字节获得第五起始标识105,也就是将起始标识从参数类型0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e7472616374之后挪动至地址数据余量的标签字段10之后。
步骤S12:终端计算第四拆分结果中的接收者地址的实际数据长度,基于接收者地址的实际数据长度对第二结束标识进行更新,获得第三结束标识。
第四拆分结果中的接收者地址数据总长度为23字节,接收者地址的标签字段与长度字段各为1字节,可得,接收者地址的实际数据长度为21字节。
根据接收者地址的实际数据长度,将第二结束标识134向前移动21字节获得第三结束标识113,也就是将结束标识从合约数据5a6f080b126b0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e467265657a6542616c616e6365436f6e747261637412350a15412951299aca154f795560460308861fce0f94875a108827180350017a1541dcb7323a9385914c66daa0d0c94b3d58764c8891之后挪动至接收者地址的实际数据41dcb7323a9385914c66daa0d0c94b3d58764c8891之前。
进一步地,步骤S12之后,还包括:
步骤S13-1:硬件设备接收终端发送的密码生成指令生成密码并保存,将密码显示给用户。
一种具体的实施方式为,硬件设备接收终端发送的显示9宫格数字指令,将9宫格在屏幕上显示给用户,同时向终端返回9宫格显示成功响应。
显示9宫格数字指令例如为:00290000。
硬件设备生成和显示的9宫格为随机排列的数字1-9。
步骤S13-2:终端接收用户输入的待验证密码并对待验证密码进行加密,生成密码验证指令,将密码验证指令发送给硬件设备。
一种具体的实施方式为,用户对照硬件设备显示的随机排列的数字1-9,在终端输入待验证密码。
密码验证指令例如为:002002000407070707。
其中,00200200为指令头,04为密码长度4位,07070707为加密后的待验证密码数据。
步骤S13-3:硬件设备对密码验证指令进行解密,获得待验证密码,利用保存的密码对解密获得的待验证密码进行验证,若验证通过,向终端返回验证成功响应并执行步骤S13,否则,报错,结束。
向终端返回的验证成功响应例如为9000。
可选实施例中,还包括:
终端向硬件设备发送资源物数据设置指令。
具体的,终端根据指令头、资源物图标、精度以及资源物名称等生成资源物数据设置指令。
资源物数据设置指令例如为:
00c700000e0607062050454552000410034006。
其中,00c70000为指令头,0e0607062050454552000410034006为待在硬件设备显示和签名的资源物图标、精度以及资源物名称等。
步骤S13:终端获取预置的签名指令头,并计算第四拆分结果中的地址数据余量实际数据长度以及接收者地址实际数据长度,根据待签名数据、签名指令头、第五起始标识、第三结束标识、地址数据余量实际数据长度以及接收者地址实际数据长度生成签名请求,将签名请求发送给终端连接的硬件设备。
签名指令头例如为:002a010000。
第四拆分结果中的地址数据余量实际数据长度为2字节,接收者地址实际数据长度为21字节。
在终端分析完PB格式的流通数据并向硬件设备发送签名请求的过程中可能会出现攻击者篡改数据,为防止数据在传输过程中被攻击者篡改,本实施例在将签名请求发送给终端连接的硬件设备时,可作如下处理:
终端利用保存的共享密钥对签名请求进行加密处理,获得签名请求密文。
将签名请求密文发送给终端连接的硬件设备。
可能的实施例中,步骤S1之前,还包括:
步骤S1-1:终端与硬件设备通过蓝牙配对中的数据传递,分别生成相同的长密钥;
步骤S1-2:终端生成第一公私密钥对,使用长密钥加密第一公私密钥对中的第一公钥得到密钥协商请求,并向硬件设备发送密钥协商请求;
步骤S1-3:硬件设备接收密钥协商请求并使用长密钥解密密钥协商请求获得第一公钥;
步骤S1-4:硬件设备生成第二公私密钥对,使用第一公钥和第二公私密钥对中的第二私钥相乘得到共享密钥,保存该共享密钥;
步骤S1-5:硬件设备使用长密钥加密第二公钥得到密钥协商响应,向终端返回密钥协商响应;
步骤S1-6:终端使用长密钥解密密钥协商响应获取第二公钥,使用第一私钥乘以第二公钥得到共享密钥并保存。
此外,不同实例中的地址数据余量不同,其实际数据长度会随之发生改变,因此,需单独计算地址数据余量的实际数据长度,具体包括:
终端计算第三拆分结果中的参数数据的实际数据长度;
参数数据由标签1字节、数据长度数值1字节、实际数据3部分组成。
以上述给出的实例为例,第三拆分结果中的参数数据总长度为55字节,可得,参数数据的实际数据长度为53字节。
终端计算发起者地址、冻结时长、资源数据、接收者地址以及地址数据余量的标签字段五项数据总长度;
第四拆分结果中的发起者地址、冻结时长、资源数据、接收者地址以及地址数据余量的标签字段这五项数据的数据总长度为已知值,分别为23字节、2字节、2字节、23字节、1字节。
五项数据总长度为51字节。
对参数数据的实际数据长度与五项数据总长度进行差运算,将计算获得的差值作为第四拆分结果中的地址数据余量实际数据长度。
上述实例数据中的地址数据余量实际数据长度为2字节。
可选实施例中,步骤S13具体包括:
步骤S131:终端计算第四拆分结果中的地址数据余量实际数据长度以及接收者地址实际数据长度,并获取预置的第一签名指令头以及私钥派生地址,根据第五起始标识、第三结束标识、地址数据余量实际数据长度、接收者地址实际数据长度、第一签名指令头以及私钥派生地址生成第一签名请求,将第一签名请求发送给终端连接的硬件设备。
步骤S132:硬件设备接收第一签名请求并保存,向终端返回成功响应。
步骤S133:终端获取预置的第二签名指令头,并根据待签名数据以及第二签名指令头生成第二签名请求,将第二签名请求发送给硬件设备。
步骤S134:硬件设备接收第二签名请求并保存,向终端返回成功响应。
步骤S14:硬件设备对签名请求进行解析,根据解析结果中的第五起始标识以及地址数据余量实际数据长度从解析结果中的待签名数据中确定待显示的余量数据,根据解析结果中的第三结束标识以及接收者地址实际数据长度从解析结果中的待签名数据中确定待显示的接收者地址。
待显示的余量数据为:8827;
待显示的接收者地址为:41dcb7323a9385914c66daa0d0c94b3d58764c8891。
当签名请求为密文数据时,硬件设备对签名请求进行解析具体包括:
硬件设备利用保存的共享密钥对签名请求密文进行解密处理,并对解密获得的签名请求明文进行解析。
可选实施例中,步骤S14具体包括:
步骤S141:硬件设备接收终端发送的签名结果获取请求,分别对第一签名请求以及第二签名请求进行解析,根据解析结果判断待签名数据对应的操作指令,若是地址冻结操作,则执行步骤S142;
步骤S142:硬件设备根据解析出的第五起始标识以及地址数据余量实际数据长度从解析出的待签名数据中确定待显示的余量数据,根据解析出的第三结束标识以及接收者地址实际数据长度从解析出的待签名数据中确定待显示的接收者地址。
步骤S15:硬件设备对余量数据以及接收者地址进行显示。
可能的实施例中,步骤S15之后还包括:
步骤S16:硬件设备判断是否接收到用户针对所显示的余量数据以及接收者地址输入的确认操作,若是,则执行步骤S17,否则,报错,结束。
用户将硬件设备所显示的数据与终端设备上的数据进行比对,若一致,则确认数据未被攻击者篡改,在硬件设备上输入确认操作,若不一致,则确认数据发生了篡改,在硬件设备上输入取消操作,硬件设备报错结束。
进一步地,硬件设备若在预设时间内未接收到户针对所显示的余量数据以及接收者地址输入的确认操作,则报错,结束。
步骤S17:硬件设备根据从第一签名请求中解析出的私钥派生地址生成私钥,利用私钥对从第二签名请求中解析出的待签名数据进行签名处理,并将签名结果返回给终端。
签名结果例如为:
16658b4d004737334df951cf8728e03108d3cc2a6ebcad306fb7a4e2984c02fa4bd1ad1664fe4768c36c585171d21207a1fcd8080a075f8b472585f8eaf6a53501。
当攻击者仅单纯修改流通数据本身(如地址数据余量和接收者地址)而不改变数据结构时,则能够顺利通过前述数据结构判断流程,但最终在硬件设备上显示时,会显示出攻击者修改后的数据,通过步骤S16让用户检查确认所显示的数据是否正确能够避免所见非所签情况的发生。
本实施例通过判断数据结构、对签名请求进行加密处理、通过用户确认三种方式来避免可能发生的所见非所签情况,保证用户不受损失。
步骤S18:终端获取预置的第三签名指令头,根据私钥派生地址以及第三签名指令头生成公钥获取请求,将公钥获取请求发送给硬件设备。
硬件设备根据私钥派生地址生成的私钥为一次性的,使用过后便失效,因此,终端在向硬件设备获取公钥时还需向硬件设备提供私钥派生地址。
步骤S19:硬件设备根据从公钥获取请求中解析出的私钥派生地址生成私钥,根据私钥生成公钥,将公钥返回给终端。
根据私钥派生路径派生出的私钥数据为一个64位十六进制随机数,通过椭圆曲线算法中指定曲线SECP256K1,向计算所得结果前添加04,得到未压缩的公钥数据,为一个以04开头的130位十六进制数,对该未压缩的公钥数据进行Keccak_256计算,获得压缩后的公钥,将该公钥数据返回给终端。
步骤S20:终端利用公钥对签名结果进行验签,若验签成功,则基于签名结果生成事务数据,将事务数据广播至区块链事务暂存池,否则,报错,结束。
可能的攻击方式中,攻击者会在上述三次拆分处理后对待签名数据结构进行篡改并改变标识数据以使硬件设备显示正确的数据,但实际上是针对被篡改的数据进行签名,为防止此类骗签情况的发生,可执行如下操作:
步骤S21:区块链节点从区块链事务暂存池中提取事务数据并进行解析,判断解析结果是否符合目标数据结构,若符合,则执行步骤S22,否则,报错,结束。
目标数据结构为预设的PB数据结构。
当解析结果不符合预设的PB数据结构时,区块链节点无法获得正确的数据,终止交易操作。
步骤S22:区块链节点对解析结果中的签名结果进行验签,若验签成功,执行数据流通操作,否则,报错,结束。
当解析结果符合PB数据结构且区块链节点验签成功时,确定数据正确,执行数据流通操作,否则,当解析结果符合PB数据结构但区块链节点验签失败时,确定数据被篡改,终止交易操作。
本实施例通过区块链节点验证数据结构并验证签名结果双重操作可有效解决骗签问题。
此外,当待签名数据对应的操作指令是地址解冻操作时:执行与上述步骤S1至步骤S17基本相同的操作流程,不同之处在于,步骤S7中拆分出的参数类型和参数数据为地址解冻操作对应的数据;步骤S10中第四拆分结果包含三项数据,分别是发起者地址、冻结内容以及接收者地址。
解析地址解冻操作的待签名数据,需要给冻结内容和接收者地址加上标识,冻结内容是将第四起始标识挪动至发起者地址的标签长度、发起者地址的实际数据以及冻结内容的标签长度之后,指向冻结内容的实际数据开始位置;接收者地址是将第二结束标识挪动至接收者地址的实际数据长度(接收者地址数据长度是固定值)之前,指向接收者地址的实际数据开始位置。
硬件设备对冻结内容和接收者地址进行显示。
当待签名数据对应的操作指令是第一数据流通操作时:执行与上述步骤S1至步骤S17基本相同的操作流程,不同之处在于,步骤S7中拆分出的参数类型和参数数据为第一数据流通操作对应的数据;步骤S10中第四拆分结果包含三项数据,分别是发起者地址、接收者地址以及流通量。
解析第一数据流通操作的待签名数据,需要给接收者地址和流通量加上标识,接收者地址是将第四起始标识挪动至发起者地址的标签长度、发起者地址的实际数据以及接收者地址的标签长度之后,指向接收者地址的实际数据开始位置;流通量是将第二结束标识挪动至流通量的实际数据长度之前,指向流通量的实际数据开始位置。
硬件设备对接收者地址和流通量进行显示。
当待签名数据对应的操作指令是第二数据流通操作时:执行与上述步骤S1至步骤S17基本相同的操作流程,不同之处在于,步骤S7中拆分出的参数类型和参数数据为第二数据流通操作对应的数据;步骤S10中第四拆分结果包含四项数据,分别是资源物名称、发起者地址、接收者地址以及待流通的资源物数量。
解析第二数据流通操作的待签名数据,需要分别给资源物名称、接收者地址以及待流通的资源物数量3项加上标识,资源物名称是将第四起始标识挪动至资源物名称的标签和长度数据共2字节之后,指向资源物名称的实际数据开始位置;接收者地址是将终端复制的第四起始标识挪动至资源物名称的标签长度、资源物名称的长度数据、资源物名称的实际数据、发起者地址的标签长度和实际数据、接收者地址的标签长度和长度数据之后,指向接收者地址的实际数据开始位置;待流通的资源物数量是将第二结束标识挪动至待流通的资源物数量的实际数据之前,指向待流通的资源物数量的实际数据开始位置。
硬件设备对资源物名称、接收者地址以及待流通的资源物数量进行显示。
以第二数据流通操作为例:
终端生成的第一签名请求例如为:
00f801002600b50812116d2f3434272f313935272f30272f302f30020e0202038901010102731503025307。
其中:
00f80100是第一签名指令头,2600b50812116d2f3434272f313935272f30272f302f30是私钥派生地址,020e是标签和长度14字节,0202038901010102731503025307是待在硬件设备上显示的各个数据的标识,具体含义如下:
02 代表第二数据流通操作
02 03 代表接下来的数据是待流通的资源物数量的标识,数据长度3字节
8901 待流通的资源物数量的标识
01 长度1字节
01 02 代表接下来的数据是接收者地址的标识,数据长度2字节
73 接收者地址的标识
15 长度15字节
03 02 代表接下来的数据是资源物名称的标识,数据长度2字节
53 资源物名称的标识
07 长度7字节
终端生成的第二签名请求例如为:
00f80300910a0223bc22082b72b05b7674b2574090f288f7d42e5a730802126f0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e736665724173736574436f6e747261637412390a07313030333430361215412951299aca154f795560460308861fce0f94875a1a15417477951026491cfda5920233b818eb3ced770eb4200470a5b885f7d42e。
其中:
00f80300是第二签名指令头,91为接下来的数据长度,91是十六进制数,换算成十进制是145,表示接下来的数据长度是145字节;0a0223bc22082b72b05b7674b2574090f288f7d42e5a730802126f0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e736665724173736574436f6e747261637412390a07313030333430361215412951299aca154f795560460308861fce0f94875a1a15417477951026491cfda5920233b818eb3ced770eb4200470a5b885f7d42e是待签名数据。
硬件设备接收的签名结果获取请求例如为:002a0000。
硬件设备利用上述私钥派生地址实例生成的私钥对上述待签名数据实例进行签名,生成的签名结果例如为:
257dabf4895a3c628bd592893d41a69656b9822bea2a83a31f8b358df19ef8ce218cb754e015b08dc64b67fc4837978d246150a8a900a81489c4b7c64e8056a801。
终端生成的公钥获取请求例如为:
00e60000130812116d2f3434272f313935272f30272f302f30。
其中,00e60000是第三签名指令头,13是长度的十六进制数,十进制为19字节,0812116d2f3434272f313935272f30272f302f30是私钥派生路径。
硬件设备生成的公钥例如为:
037574509b460adfa48ef3f815108517b7f1eef8aafd2b53e7b10fb844d10b16ae。
终端生成的事务数据例如为:
294dd98bb901714fead497a4146e254f341ff40f1ae784865ab049c854644343","txRawHex":"0a91010a0223bc22082b72b05b7674b2574090f288f7d42e5a730802126f0a32747970652e676f6f676c65617069732e636f6d2f70726f746f636f6c2e5472616e736665724173736574436f6e747261637412390a07313030333430361215412951299aca154f795560460308861fce0f94875a1a15417477951026491cfda5920233b818eb3ced770eb4200470a5b885f7d42e1241257dabf4895a3c628bd592893d41a69656b9822bea2a83a31f8b358df19ef8ce218cb754e015b08dc64b67fc4837978d246150a8a900a81489c4b7c64e8056a801。
当待签名数据对应的操作指令是触发智能合约操作时:执行与上述步骤S1至步骤S17基本相同的操作流程,不同之处在于,步骤S7中拆分出的参数类型和参数数据为触发智能合约操作对应的数据;步骤S10中第四拆分结果包含四项数据,分别是发起者地址、智能合约地址、触发值以及数据域。
解析触发智能合约操作的待签名数据,需要给智能合约地址和数据域加上标识,智能合约地址是将第四起始标识挪动至发起者地址的标签、发起者地址的长度数据、发起者地址的实际数据、智能合约地址的标签和长度数据之后,指向智能合约地址的实际数据开始位置;数据域是将第二结束标识挪动至数据域的实际数据长度(数据域的实际数据长度会在数据域的标签后写明)之前,指向数据域的实际数据开始位置。
硬件设备对智能合约地址和数据域进行显示。
本申请利用终端的高处理性能对待签名数据(PB格式)进行处理,将准备在硬件设备上显示的数据的位置和长度计算出来,再与待签名数据一同发送到硬件设备上,硬件设备根据终端发送的位置和长度即可从待签名数据中直接找到待显示的数据并显示在屏幕上。采用上述方法,硬件设备能够对PB格式流通数据进行快速解析,继而实现所见即所签。
下述为本申请系统实施例,可以用于执行本申请方法实施例。对于本申请系统实施例中未披露的细节,请参照本申请方法实施例。
本申请提供一种解析PB格式流通数据的系统,包括:
标识设置模块,用于接收用户触发的操作指令并从缓存中提取待签名数据,根据所述待签名数据的数据长度对所述待签名数据设置第一起始标识与第一结束标识;
数据拆分模块,用于调用预设的第一函数对所述待签名数据进行第一拆分处理,获得第一拆分结果,所述第一拆分结果包含区块字节、区块哈希、超时时间、合约数据以及时间戳五项数据;
标识更新模块,用于计算所述第一拆分结果中的区块字节、区块哈希以及超时时间三项数据总长度,基于所述三项数据总长度对所述第一起始标识进行更新,获得第二起始标识;
所述标识更新模块,还用于计算所述第一拆分结果中的时间戳数据总长度,基于所述时间戳数据总长度对所述第一结束标识进行更新,获得第二结束标识;
所述数据拆分模块,还用于调用预设的第二函数对所述第一拆分结果中的合约数据进行第二拆分处理,获得第二拆分结果,所述第二拆分结果包含合约类型与合约参数两项数据;
所述标识更新模块,还用于计算所述第二拆分结果中的合约类型数据总长度,基于所述合约数据的标签字段、所述合约数据的合约长度字段以及所述合约类型数据总长度对所述第二起始标识进行更新,获得第三起始标识;
所述数据拆分模块,还用于调用预设的第三函数对所述第二拆分结果中的合约参数进行第三拆分处理,获得第三拆分结果,所述第三拆分结果包含参数类型与参数数据两项数据;
函数确定模块,用于根据所述第三拆分结果中的参数类型确定实际被调用函数,并判断所述实际被调用函数是否与所述操作指令相对应,若是,触发所述标识更新模块,否则,报错,结束;
所述标识更新模块,还用于计算所述第三拆分结果中的参数类型数据总长度,基于所述合约参数的标签字段、所述合约参数的参数长度字段以及所述参数类型数据总长度对所述第三起始标识进行更新,获得第四起始标识;
所述数据拆分模块,还用于获取与所述实际被调用函数相对应的第四函数,利用所述第四函数对所述第三拆分结果中的参数数据进行拆分处理,获得第四拆分结果,所述第四拆分结果中包含至少三项数据;
所述标识更新模块,还用于计算所述第四拆分结果中第一目标数据的数据长度,基于所述第一目标数据的数据长度对所述第四起始标识进行更新,获得第五起始标识;
所述标识更新模块,还用于计算所述第四拆分结果中第二目标数据的实际数据长度,基于所述第二目标数据的实际数据长度对所述第二结束标识进行更新,获得第三结束标识;
请求生成模块,用于获取预置的目标签名指令头,并计算所述第四拆分结果中待显示数据的实际数据长度,根据所述待签名数据、目标签名指令头、所述第五起始标识、所述第三结束标识、所述待显示数据的实际数据长度生成签名请求,将所述签名请求发送给请求接收模块;
所述请求接收模块,用于保存所述签名请求,并等待接收签名结果获取请求;
数据确定模块,用于当接收到所述签名结果获取请求时,对所述签名请求进行解析,根据解析结果中的第五起始标识、第三结束标识以及待显示数据的实际数据长度从解析结果中的待签名数据中确定待显示数据;
数据显示模块,用于对所述待显示数据进行显示;
签名处理模块,用于根据从所述签名请求中解析出的私钥派生地址生成私钥,利用所述私钥对从所述签名请求中解析出的待签名数据进行签名处理,并将签名结果返回。
可选实施例中,若所述待签名数据对应的操作指令为地址冻结操作,所述第四拆分结果包含发起者地址、地址数据余量、冻结时长、资源数据以及接收者地址五项数据,所述标识更新模块具体用于:
计算所述第四拆分结果中的发起者地址数据总长度,基于所述参数数据的标签字段、所述参数数据的参数长度字段、所述发起者地址数据总长度以及所述地址数据余量的标签字段对所述第四起始标识进行更新,获得第五起始标识;
所述标识更新模块具体还用于:
计算所述第四拆分结果中的接收者地址的实际数据长度,基于所述接收者地址的实际数据长度对所述第二结束标识进行更新,获得第三结束标识;
所述请求生成模块具体用于:
获取预置的目标签名指令头,并计算所述第四拆分结果中的地址数据余量实际数据长度以及所述接收者地址实际数据长度,根据所述待签名数据、目标签名指令头、所述第五起始标识、所述第三结束标识、所述地址数据余量实际数据长度以及所述接收者地址实际数据长度生成签名请求,将所述签名请求发送给所述请求接收模块;
所述数据确定模块具体用于:
当接收到所述签名结果获取请求时,根据所述签名结果获取请求判断待签名数据对应的操作指令,若是地址冻结操作,则对所述签名请求进行解析,根据解析结果中的第五起始标识以及地址数据余量实际数据长度从解析结果中的待签名数据中确定待显示的余量数据,根据解析结果中的第三结束标识以及接收者地址实际数据长度从解析结果中的待签名数据中确定待显示的接收者地址;
所述数据显示模块具体用于:
对所述余量数据以及所述接收者地址进行显示。
可选实施例中,所述请求生成模块用于:
计算所述第四拆分结果中的地址数据余量实际数据长度以及所述接收者地址实际数据长度,并获取预置的第一签名指令头以及私钥派生地址,根据所述第五起始标识、所述第三结束标识、所述地址数据余量实际数据长度、所述接收者地址实际数据长度、所述第一签名指令头以及所述私钥派生地址生成第一签名请求,将所述第一签名请求发送给所述请求接收模块;
所述请求接收模块,用于接收所述第一签名请求并保存,返回成功响应;
所述请求生成模块,用于获取预置的第二签名指令头,并根据所述待签名数据以及所述第二签名指令头生成第二签名请求,将所述第二签名请求发送给所述请求接收模块;
所述请求接收模块,用于接收所述第二签名请求并保存,返回成功响应;
所述数据确定模块具体用于:
当接收到所述签名结果获取请求时,分别对所述第一签名请求以及所述第二签名请求进行解析,根据解析结果判断待签名数据对应的操作指令,若是地址冻结操作,则根据解析出的第五起始标识以及地址数据余量实际数据长度从解析出的待签名数据中确定待显示的余量数据,根据解析出的第三结束标识以及接收者地址实际数据长度从解析出的待签名数据中确定待显示的接收者地址。
可选实施例中,所述请求生成模块还用于:
获取预置的第三签名指令头,根据所述私钥派生地址以及所述第三签名指令头生成公钥获取请求,将所述公钥获取请求发送给私钥生成模块;
所述私钥生成模块,用于:
根据从所述公钥获取请求中解析出的私钥派生地址生成私钥,根据所述私钥生成公钥,将所述公钥返回;
所述系统还包括事务数据生成模块,用于:
利用所述公钥对所述签名结果进行验签,若验签成功,则基于所述签名结果生成事务数据,将所述事务数据广播至区块链事务暂存池,触发数据结构判断模块,否则,报错,结束;
所述数据结构判断模块,用于从所述区块链事务暂存池中提取所述事务数据并进行解析,判断解析结果是否符合目标数据结构,若符合,则触发验签模块,否则,报错,结束;
所述验签模块,用于所述区块链节点对解析结果中的签名结果进行验签,若验签成功,执行数据流通操作,否则,报错,结束。
所述标识更新模块具体还用于:
计算所述第三拆分结果中的参数数据的实际数据长度;
所述计算所述第四拆分结果中的地址数据余量实际数据长度,包括:
计算所述地址数据余量的标签字段、所述发起者地址、所述冻结时长、所述资源数据以及所述接收者地址五项数据总长度;
对所述参数数据的实际数据长度与所述五项数据总长度进行差运算,将计算获得的差值作为所述第四拆分结果中的地址数据余量实际数据长度。
可选实施例中,所述系统还包括:
操作接收模块,用于判断是否接收到用户针对所显示的余量数据以及接收者地址输入的确认操作,若是,则触发所述签名处理模块,否则,报错,结束。
可选实施例中,若所述待签名数据对应的操作指令为地址解冻操作,所述第四拆分结果包含所述发起者地址、冻结内容以及所述接收者地址三项数据,待显示数据包括所述冻结内容和所述接收者地址;
若所述待签名数据对应的操作指令为第一数据流通操作,所述第四拆分结果包含所述发起者地址、所述接收者地址以及流通量三项数据,待显示数据包括所述接收者地址和所述流通量;
若所述待签名数据对应的操作指令为第二数据流通操作,所述第四拆分结果包含资源物名称、所述发起者地址、所述接收者地址以及待流通的资源物数量四项数据,待显示数据包括所述资源物名称、所述接收者地址以及所述待流通的资源物数量;
若所述待签名数据对应的操作指令为触发智能合约操作,所述第四拆分结果包含所述发起者地址、智能合约地址、触发值以及数据域四项数据,待显示数据包括所述智能合约地址和所述数据域。
可选实施例中,所述第一函数具体为签名数据处理函数,所述获得第一拆分结果之后,还包括:
判断所述第一拆分结果是否符合所述签名数据处理函数的函数结构,若是,则触发所述标识更新模块,否则,报错,结束;
所述第二函数具体为合约数据处理函数,所述获得第二拆分结果之后,还包括:
判断所述第二拆分结果是否符合所述合约数据处理函数的函数结构,若是,则触发所述标识更新模块,否则,报错,结束;
所述第三函数具体为合约参数处理函数,所述获得第三拆分结果之后,还包括:
判断所述第三拆分结果是否符合所述合约参数处理函数的函数结构,若是,则触发所述函数确定模块,否则,报错,结束;
所述第四函数具体为参数数据处理函数,所述获得第四拆分结果之后,还包括:
判断所述第四拆分结果是否符合所述参数数据处理函数的函数结构,若是,则触发所述标识更新模块,否则,报错,结束。
可选实施例中,将所述签名请求发送给请求接收模块,包括:
利用保存的共享密钥对所述签名请求进行加密处理,获得签名请求密文;
将所述签名请求密文发送给所述终端连接的硬件设备;
对所述签名请求进行解析,包括:
利用保存的共享密钥对所述签名请求密文进行解密处理,并对解密获得的签名请求明文进行解析。
可选实施例中,所述系统还包括共享密钥生成模块,用于:
通过蓝牙配对中的数据传递,分别生成相同的长密钥;
生成第一公私密钥对,使用所述长密钥加密所述第一公私密钥对中的第一公钥得到密钥协商请求,并向所述硬件设备发送所述密钥协商请求;
使用所述长密钥解密所述密钥协商请求获得第一公钥;
生成第二公私密钥对,使用所述第一公钥和所述第二公私密钥对中的第二私钥相乘得到共享密钥并保存;
使用所述长密钥加密所述第二公钥得到密钥协商响应,并向所述终端返回所述密钥协商响应;
使用所述长密钥解密所述密钥协商响应获得第二公钥,使用所述第二公钥和所述第一公私密钥对中的第一私钥相乘得到共享密钥并保存。
可选实施例中,所述系统还包括密码处理模块,用于:
接收密码生成指令生成密码并保存,将所述密码显示给用户;
接收用户输入的待验证密码并对所述待验证密码进行加密,生成密码验证指令,将所述密码验证指令返回;
对所述密码验证指令进行解密,获得待验证密码,利用保存的密码对解密获得的待验证密码进行验证,若验证通过,返回验证成功响应并触发所述请求生成模块,否则,报错,结束。
需要说明的是,上述实施例提供的一种解析PB格式流通数据的系统在执行一种解析PB格式流通数据的方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的对PB格式的流通数据实现所见即所签的系统与对PB格式的流通数据实现所见即所签的方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请利用终端的高处理性能对待签名数据(PB格式)进行处理,将准备在硬件设备上显示的数据的位置和长度计算出来,再与待签名数据一同发送到硬件设备上,硬件设备根据终端发送的位置和长度即可从待签名数据中直接找到待显示的数据并显示在屏幕上。采用上述系统,硬件设备能够对PB格式流通数据进行快速解析,继而实现所见即所签。
本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现前述任一实施例方法的步骤。其中,计算机可读存储介质可以包括但不限于任何类型的盘,包括软盘、光盘、DVD、CD-ROM、微型驱动器以及磁光盘、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、闪速存储器设备、磁卡或光卡、纳米系统(包括分子存储器IC),或适合于存储指令和/或数据的任何类型的媒介或设备。
本申请实施例还提供了一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述任一实施例方法的步骤。
本申请实施例提供了一种终端包括:处理器和存储器。
本申请实施例中,处理器为计算机系统的控制中心,可以是实体机的处理器,也可以是虚拟机的处理器。处理器可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central Processing Unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。
存储器可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在本申请的一些实施例中,存储器中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器所执行以实现本申请实施例中的方法。
一些实施例中,终端还包括有:外围设备接口和至少一个外围设备。处理器、存储器和外围设备接口之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口相连。具体地,外围设备包括:显示屏、摄像头和音频电路中的至少一种。
外围设备接口可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器和存储器。在本申请的一些实施例中,处理器、存储器和外围设备接口被集成在同一芯片或电路板上;在本申请的一些其他实施例中,处理器、存储器和外围设备接口中的任意一个或两个可以在单独的芯片或电路板上实现。本申请实施例对此不作具体限定。
显示屏用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏是触摸显示屏时,显示屏还具有采集在显示屏的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器进行处理。此时,显示屏还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在本申请的一些实施例中,显示屏可以为一个,设置于终端的前面板;在本申请的另一些实施例中,显示屏可以为至少两个,分别设置在终端的不同表面或呈折叠设计;在本申请的再一些实施例中,显示屏可以是柔性显示屏,设置在终端的弯曲表面上或折叠面上。甚至,显示屏还可以设置成非矩形的不规则图形,也即异形屏。显示屏可以采用LCD(Liquid CrystalDisplay,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头用于采集图像或视频。可选地,摄像头包括前置摄像头和后置摄像头。通常,前置摄像头设置在客户端的前面板,后置摄像头设置在客户端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在本申请的一些实施例中,摄像头还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器进行处理。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。
电源用于为终端中的各个组件进行供电。电源可以是交流电、直流电、一次性电池或可充电电池。当电源包括可充电电池时,该可充电电池可以是有线充电电池或无线充电电池。有线充电电池是通过有线线路充电的电池,无线充电电池是通过无线线圈充电的电池。该可充电电池还可以用于支持快充技术。
本申请实施例中示出的客户端结构框图并不构成对终端的限定,终端可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
在本申请中,术语“第一”、“第二”等仅用于描述的目的,而不能理解为指示或暗示相对重要性或顺序;术语“多个”则指两个或两个以上,除非另有明确的限定。术语“安装”、“相连”、“连接”、“固定”等术语均应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或一体地连接;“相连”可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请中的具体含义。
本申请的描述中,需要理解的是,术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的系统或单元必须具有特定的方向、以特定的方位构造和操作,因此,不能理解为对本申请的限制。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (14)
1.一种解析PB格式流通数据的方法,其特征在于,所述方法包括:
步骤S1:终端接收用户触发的操作指令并从缓存中提取待签名数据,根据所述待签名数据的数据长度对所述待签名数据设置第一起始标识与第一结束标识;
步骤S2:所述终端调用预设的第一函数对所述待签名数据进行第一拆分处理,获得第一拆分结果,所述第一拆分结果包含区块字节、区块哈希、超时时间、合约数据以及时间戳五项数据;
步骤S3:所述终端计算所述第一拆分结果中的区块字节、区块哈希以及超时时间三项数据总长度,基于所述三项数据总长度对所述第一起始标识进行更新,获得第二起始标识;
步骤S4:所述终端计算所述第一拆分结果中的时间戳数据总长度,基于所述时间戳数据总长度对所述第一结束标识进行更新,获得第二结束标识;
步骤S5:所述终端调用预设的第二函数对所述第一拆分结果中的合约数据进行第二拆分处理,获得第二拆分结果,所述第二拆分结果包含合约类型与合约参数两项数据;
步骤S6:所述终端计算所述第二拆分结果中的合约类型数据总长度,基于所述合约数据的标签字段、所述合约数据的合约长度字段以及所述合约类型数据总长度对所述第二起始标识进行更新,获得第三起始标识;
步骤S7:所述终端调用预设的第三函数对所述第二拆分结果中的合约参数进行第三拆分处理,获得第三拆分结果,所述第三拆分结果包含参数类型与参数数据两项数据;
步骤S8:所述终端根据所述第三拆分结果中的参数类型确定实际被调用函数,并判断所述实际被调用函数是否与所述操作指令相对应,若是,执行步骤S9,否则,报错,结束;
步骤S9:所述终端计算所述第三拆分结果中的参数类型数据总长度,基于所述合约参数的标签字段、所述合约参数的参数长度字段以及所述参数类型数据总长度对所述第三起始标识进行更新,获得第四起始标识;
步骤S10:所述终端获取与所述实际被调用函数相对应的第四函数,利用所述第四函数对所述第三拆分结果中的参数数据进行拆分处理,获得第四拆分结果,所述第四拆分结果中包含至少三项数据;
步骤S11:所述终端计算所述第四拆分结果中第一目标数据的数据长度,基于所述第一目标数据的数据长度对所述第四起始标识进行更新,获得第五起始标识;
步骤S12:所述终端计算所述第四拆分结果中第二目标数据的实际数据长度,基于所述第二目标数据的实际数据长度对所述第二结束标识进行更新,获得第三结束标识;
步骤S13:所述终端获取预置的目标签名指令头,并计算所述第四拆分结果中待显示数据的实际数据长度,根据所述待签名数据、目标签名指令头、所述第五起始标识、所述第三结束标识、所述待显示数据的实际数据长度生成签名请求,将所述签名请求发送给所述终端连接的硬件设备;
步骤S14:所述硬件设备保存所述签名请求,并等待接收所述终端发送的签名结果获取请求;
步骤S15:当接收到所述签名结果获取请求时,所述硬件设备对所述签名请求进行解析,根据解析结果中的第五起始标识、第三结束标识以及待显示数据的实际数据长度从解析结果中的待签名数据中确定待显示数据;
步骤S16:所述硬件设备对所述待显示数据进行显示;
步骤S17:所述硬件设备根据从所述签名请求中解析出的私钥派生地址生成私钥,利用所述私钥对从所述签名请求中解析出的待签名数据进行签名处理,并将签名结果返回给所述终端。
2.根据权利要求1所述的方法,其特征在于,若所述待签名数据对应的操作指令为地址冻结操作,所述第四拆分结果包含发起者地址、地址数据余量、冻结时长、资源数据以及接收者地址五项数据,所述步骤S11包括:
所述终端计算所述第四拆分结果中的发起者地址数据总长度,基于所述参数数据的标签字段、所述参数数据的参数长度字段、所述发起者地址数据总长度以及所述地址数据余量的标签字段对所述第四起始标识进行更新,获得第五起始标识;
所述步骤S12包括:
所述终端计算所述第四拆分结果中的接收者地址的实际数据长度,基于所述接收者地址的实际数据长度对所述第二结束标识进行更新,获得第三结束标识;
所述步骤S13包括:
所述终端获取预置的目标签名指令头,并计算所述第四拆分结果中的地址数据余量实际数据长度以及所述接收者地址实际数据长度,根据所述待签名数据、目标签名指令头、所述第五起始标识、所述第三结束标识、所述地址数据余量实际数据长度以及所述接收者地址实际数据长度生成签名请求,将所述签名请求发送给所述终端连接的硬件设备;
所述步骤S15包括:
步骤S151:当接收到所述签名结果获取请求时,所述硬件设备对所述签名请求进行解析,根据解析结果判断待签名数据对应的操作指令,若是地址冻结操作,则执行步骤S152;
步骤S152:所述硬件设备根据解析结果中的第五起始标识以及地址数据余量实际数据长度从解析结果中的待签名数据中确定待显示的余量数据,根据解析结果中的第三结束标识以及接收者地址实际数据长度从解析结果中的待签名数据中确定待显示的接收者地址;
所述步骤S16包括:
所述硬件设备对所述余量数据以及所述接收者地址进行显示。
3.根据权利要求2所述的方法,其特征在于,所述步骤S13包括:
步骤S131:所述终端计算所述第四拆分结果中的地址数据余量实际数据长度以及所述接收者地址实际数据长度,并获取预置的第一签名指令头以及私钥派生地址,根据所述第五起始标识、所述第三结束标识、所述地址数据余量实际数据长度、所述接收者地址实际数据长度、所述第一签名指令头以及所述私钥派生地址生成第一签名请求,将所述第一签名请求发送给所述终端连接的硬件设备;
步骤S132:所述硬件设备接收所述第一签名请求并保存,向所述终端返回成功响应;
步骤S133:所述终端获取预置的第二签名指令头,并根据所述待签名数据以及所述第二签名指令头生成第二签名请求,将所述第二签名请求发送给所述硬件设备;
步骤S134:所述硬件设备接收所述第二签名请求并保存,向所述终端返回成功响应;
所述步骤S14包括:
所述硬件设备等待接收所述终端发送的签名结果获取请求;
所述步骤S152包括:
所述硬件设备分别对所述第一签名请求以及所述第二签名请求进行解析,根据解析出的第五起始标识以及地址数据余量实际数据长度从解析出的待签名数据中确定待显示的余量数据,根据解析出的第三结束标识以及接收者地址实际数据长度从解析出的待签名数据中确定待显示的接收者地址。
4.根据权利要求3所述的方法,其特征在于,所述步骤S17之前,还包括:
步骤S17’:所述硬件设备判断是否接收到用户针对所显示的余量数据以及接收者地址输入的确认操作,若是,则执行步骤S17,否则,报错,结束;
所述执行步骤S17包括:
所述硬件设备根据从所述第一签名请求中解析出的私钥派生地址生成私钥,利用所述私钥对从所述第二签名请求中解析出的待签名数据进行签名处理,并将签名结果返回给所述终端。
5.根据权利要求3所述的方法,其特征在于,所述方法还包括:
步骤S18:所述终端获取预置的第三签名指令头,根据所述私钥派生地址以及所述第三签名指令头生成公钥获取请求,将所述公钥获取请求发送给所述硬件设备;
步骤S19:所述硬件设备根据从所述公钥获取请求中解析出的私钥派生地址生成私钥,根据所述私钥生成公钥,将所述公钥返回给所述终端;
步骤S20:所述终端利用所述公钥对所述签名结果进行验签,若验签成功,则基于所述签名结果生成事务数据,将所述事务数据广播至区块链事务暂存池,执行步骤S21,否则,报错,结束;
步骤S21:区块链节点从所述区块链事务暂存池中提取所述事务数据并进行解析,判断解析结果是否符合目标数据结构,若符合,则执行步骤S22,否则,报错,结束;
步骤S22:所述区块链节点对解析结果中的签名结果进行验签,若验签成功,执行数据流通操作,否则,报错,结束。
6.根据权利要求5所述的方法,其特征在于,所述步骤S9还包括:
所述终端计算所述第三拆分结果中的参数数据的实际数据长度;
所述计算所述第四拆分结果中的地址数据余量实际数据长度,包括:
计算所述地址数据余量的标签字段、所述发起者地址、所述冻结时长、所述资源数据以及所述接收者地址五项数据总长度;
对所述参数数据的实际数据长度与所述五项数据总长度进行差运算,将计算获得的差值作为所述第四拆分结果中的地址数据余量实际数据长度。
7.根据权利要求1所述的方法,其特征在于,若所述待签名数据对应的操作指令为地址解冻操作,所述第四拆分结果包含发起者地址、冻结内容以及接收者地址三项数据,待显示数据包括所述冻结内容和所述接收者地址;
若所述待签名数据对应的操作指令为第一数据流通操作,所述第四拆分结果包含发起者地址、接收者地址以及流通量三项数据,待显示数据包括所述接收者地址和所述流通量;
若所述待签名数据对应的操作指令为第二数据流通操作,所述第四拆分结果包含资源物名称、发起者地址、接收者地址以及待流通的资源物数量四项数据,待显示数据包括所述资源物名称、所述接收者地址以及所述待流通的资源物数量;
若所述待签名数据对应的操作指令为触发智能合约操作,所述第四拆分结果包含发起者地址、智能合约地址、触发值以及数据域四项数据,待显示数据包括所述智能合约地址和所述数据域。
8.根据权利要求1所述的方法,其特征在于,所述第一函数具体为签名数据处理函数,所述获得第一拆分结果之后,还包括:
判断所述第一拆分结果是否符合所述签名数据处理函数的函数结构,若是,则执行步骤S3,否则,报错,结束;
所述第二函数具体为合约数据处理函数,所述获得第二拆分结果之后,还包括:
判断所述第二拆分结果是否符合所述合约数据处理函数的函数结构,若是,则执行步骤S6,否则,报错,结束;
所述第三函数具体为合约参数处理函数,所述获得第三拆分结果之后,还包括:
判断所述第三拆分结果是否符合所述合约参数处理函数的函数结构,若是,则执行步骤S8,否则,报错,结束;
所述第四函数具体为参数数据处理函数,所述获得第四拆分结果之后,还包括:
判断所述第四拆分结果是否符合所述参数数据处理函数的函数结构,若是,则执行步骤S11,否则,报错,结束。
9.根据权利要求1所述的方法,其特征在于,所述将所述签名请求发送给所述终端连接的硬件设备,包括:
利用保存的共享密钥对所述签名请求进行加密处理,获得签名请求密文;
将所述签名请求密文发送给所述终端连接的硬件设备;
所述硬件设备对所述签名请求进行解析,包括:
所述硬件设备利用保存的共享密钥对所述签名请求密文进行解密处理,并对解密获得的签名请求明文进行解析。
10.根据权利要求9所述的方法,其特征在于,所述步骤S1之前,还包括:
步骤S1-1:所述终端与所述硬件设备通过蓝牙配对中的数据传递,分别生成相同的长密钥;
步骤S1-2:所述终端生成第一公私密钥对,使用所述长密钥加密所述第一公私密钥对中的第一公钥得到密钥协商请求,并向所述硬件设备发送所述密钥协商请求;
步骤S1-3:所述硬件设备使用所述长密钥解密所述密钥协商请求获得第一公钥;
步骤S1-4:所述硬件设备生成第二公私密钥对,使用所述第一公钥和所述第二公私密钥对中的第二私钥相乘得到共享密钥并保存;
步骤S1-5:所述硬件设备使用所述长密钥加密所述第二公钥得到密钥协商响应,并向所述终端返回所述密钥协商响应;
步骤S1-6:所述终端使用所述长密钥解密所述密钥协商响应获得第二公钥,使用所述第二公钥和所述第一公私密钥对中的第一私钥相乘得到共享密钥并保存。
11.根据权利要求1所述的方法,其特征在于,所述步骤S13之前,还包括:
步骤S13-1:硬件设备接收所述终端发送的密码生成指令生成密码并保存,将所述密码显示给用户;
步骤S13-2:所述终端接收用户输入的待验证密码并对所述待验证密码进行加密,生成密码验证指令,将所述密码验证指令发送给所述硬件设备;
步骤S13-3:所述硬件设备对所述密码验证指令进行解密,获得待验证密码,利用保存的密码对解密获得的待验证密码进行验证,若验证通过,向所述终端返回验证成功响应并执行步骤S13,否则,报错,结束。
12.一种解析PB格式流通数据的系统,其特征在于,所述系统包括:
标识设置模块,用于接收用户触发的操作指令并从缓存中提取待签名数据,根据所述待签名数据的数据长度对所述待签名数据设置第一起始标识与第一结束标识;
数据拆分模块,用于调用预设的第一函数对所述待签名数据进行第一拆分处理,获得第一拆分结果,所述第一拆分结果包含区块字节、区块哈希、超时时间、合约数据以及时间戳五项数据;
标识更新模块,用于计算所述第一拆分结果中的区块字节、区块哈希以及超时时间三项数据总长度,基于所述三项数据总长度对所述第一起始标识进行更新,获得第二起始标识;
所述标识更新模块,还用于计算所述第一拆分结果中的时间戳数据总长度,基于所述时间戳数据总长度对所述第一结束标识进行更新,获得第二结束标识;
所述数据拆分模块,还用于调用预设的第二函数对所述第一拆分结果中的合约数据进行第二拆分处理,获得第二拆分结果,所述第二拆分结果包含合约类型与合约参数两项数据;
所述标识更新模块,还用于计算所述第二拆分结果中的合约类型数据总长度,基于所述合约数据的标签字段、所述合约数据的合约长度字段以及所述合约类型数据总长度对所述第二起始标识进行更新,获得第三起始标识;
所述数据拆分模块,还用于调用预设的第三函数对所述第二拆分结果中的合约参数进行第三拆分处理,获得第三拆分结果,所述第三拆分结果包含参数类型与参数数据两项数据;
函数确定模块,用于根据所述第三拆分结果中的参数类型确定实际被调用函数,并判断所述实际被调用函数是否与所述操作指令相对应,若是,触发所述标识更新模块,否则,报错,结束;
所述标识更新模块,还用于计算所述第三拆分结果中的参数类型数据总长度,基于所述合约参数的标签字段、所述合约参数的参数长度字段以及所述参数类型数据总长度对所述第三起始标识进行更新,获得第四起始标识;
所述数据拆分模块,还用于获取与所述实际被调用函数相对应的第四函数,利用所述第四函数对所述第三拆分结果中的参数数据进行拆分处理,获得第四拆分结果,所述第四拆分结果中包含至少三项数据;
所述标识更新模块,还用于计算所述第四拆分结果中第一目标数据的数据长度,基于所述第一目标数据的数据长度对所述第四起始标识进行更新,获得第五起始标识;
所述标识更新模块,还用于计算所述第四拆分结果中第二目标数据的实际数据长度,基于所述第二目标数据的实际数据长度对所述第二结束标识进行更新,获得第三结束标识;
请求生成模块,用于获取预置的目标签名指令头,并计算所述第四拆分结果中待显示数据的实际数据长度,根据所述待签名数据、目标签名指令头、所述第五起始标识、所述第三结束标识、所述待显示数据的实际数据长度生成签名请求,将所述签名请求发送给请求接收模块;
所述请求接收模块,用于保存所述签名请求,并等待接收签名结果获取请求;
数据确定模块,用于当接收到所述签名结果获取请求时,对所述签名请求进行解析,根据解析结果中的第五起始标识、第三结束标识以及待显示数据的实际数据长度从解析结果中的待签名数据中确定待显示数据;
数据显示模块,用于对所述待显示数据进行显示;
签名处理模块,用于根据从所述签名请求中解析出的私钥派生地址生成私钥,利用所述私钥对从所述签名请求中解析出的待签名数据进行签名处理,并将签名结果返回。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现所述权利要求1-11中任一项所述方法的步骤。
14.一种终端,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现所述权利要求1-11中任一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211451786.XA CN115623087B (zh) | 2022-11-21 | 2022-11-21 | 一种解析pb格式流通数据的方法及系统 |
PCT/CN2023/127271 WO2024109441A1 (zh) | 2022-11-21 | 2023-10-27 | 一种解析pb格式流通数据的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211451786.XA CN115623087B (zh) | 2022-11-21 | 2022-11-21 | 一种解析pb格式流通数据的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115623087A true CN115623087A (zh) | 2023-01-17 |
CN115623087B CN115623087B (zh) | 2023-02-28 |
Family
ID=84879337
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211451786.XA Active CN115623087B (zh) | 2022-11-21 | 2022-11-21 | 一种解析pb格式流通数据的方法及系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115623087B (zh) |
WO (1) | WO2024109441A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105793842A (zh) * | 2013-12-31 | 2016-07-20 | 北京新媒传信科技有限公司 | 序列化消息之间的转换方法和装置 |
CN108023908A (zh) * | 2016-10-31 | 2018-05-11 | 腾讯科技(深圳)有限公司 | 数据更新方法、装置及系统 |
CN112988162A (zh) * | 2021-03-30 | 2021-06-18 | 深圳软牛科技有限公司 | Chrome浏览器的数据提取方法、装置、设备及存储介质 |
WO2022148371A1 (zh) * | 2021-01-06 | 2022-07-14 | 华为技术有限公司 | 传输报文的方法和装置 |
-
2022
- 2022-11-21 CN CN202211451786.XA patent/CN115623087B/zh active Active
-
2023
- 2023-10-27 WO PCT/CN2023/127271 patent/WO2024109441A1/zh unknown
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105793842A (zh) * | 2013-12-31 | 2016-07-20 | 北京新媒传信科技有限公司 | 序列化消息之间的转换方法和装置 |
CN108023908A (zh) * | 2016-10-31 | 2018-05-11 | 腾讯科技(深圳)有限公司 | 数据更新方法、装置及系统 |
WO2022148371A1 (zh) * | 2021-01-06 | 2022-07-14 | 华为技术有限公司 | 传输报文的方法和装置 |
CN112988162A (zh) * | 2021-03-30 | 2021-06-18 | 深圳软牛科技有限公司 | Chrome浏览器的数据提取方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
LU ZHONG-YANG 等: "The Principle and Application of Protocol Buffer" * |
曹润泽等: "Protocol Buffers在数据采集与传输系统中的应用" * |
Also Published As
Publication number | Publication date |
---|---|
CN115623087B (zh) | 2023-02-28 |
WO2024109441A1 (zh) | 2024-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110971414B (zh) | 生成签名的方法、装置、终端及服务器 | |
CN108614878B (zh) | 协议数据管理方法、装置、存储介质及系统 | |
CN111245745B (zh) | 消息发送方法、装置、节点设备及存储介质 | |
EP3772700A1 (en) | Method and device for encrypting model of neural network, and storage medium | |
CN112711774B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN110687821B (zh) | 基于区块链的智能家居控制系统及方法 | |
CN110290146B (zh) | 分享口令的生成方法、装置、服务器及存储介质 | |
CN108964903B (zh) | 密码存储方法及装置 | |
CN111177801B (zh) | 电子文档的签章方法、装置、存储介质和电子设备 | |
WO2021115038A1 (zh) | 一种应用数据处理方法及相关装置 | |
CN110597924B (zh) | 基于区块链的用户标识处理方法、装置、设备及存储介质 | |
CN110689460A (zh) | 基于区块链的交通事故数据处理方法、装置、设备及介质 | |
CN110365501B (zh) | 基于图形码进行群组加入处理的方法及装置 | |
CN112073421B (zh) | 通信处理方法、装置、终端及存储介质 | |
CN110826103A (zh) | 基于区块链的文档权限处理方法、装置、设备及存储介质 | |
CN110690999A (zh) | 基于区块链的带宽分配方法、装置、设备及存储介质 | |
CN111935166B (zh) | 通信认证方法、系统、电子设备、服务器及存储介质 | |
CN110598386A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN111901283B (zh) | 资源转移方法、装置、终端及存储介质 | |
CN110677262A (zh) | 基于区块链的信息公证方法、装置及系统 | |
CN111062725A (zh) | 人脸支付方法、装置及系统、计算机可读存储介质 | |
CN113852459A (zh) | 密钥协商方法、设备及计算机可读存储介质 | |
CN115623087B (zh) | 一种解析pb格式流通数据的方法及系统 | |
CN110532324B (zh) | 基于区块链的公告信息展示方法、装置、设备及存储介质 | |
US20050128520A1 (en) | Digital signature protection for software |
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 |