CN110297822B - 面向区块链的密钥管理方法、装置、设备及存储介质 - Google Patents
面向区块链的密钥管理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110297822B CN110297822B CN201910429421.9A CN201910429421A CN110297822B CN 110297822 B CN110297822 B CN 110297822B CN 201910429421 A CN201910429421 A CN 201910429421A CN 110297822 B CN110297822 B CN 110297822B
- Authority
- CN
- China
- Prior art keywords
- key
- data
- blockchain
- database
- value
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明公开了面向区块链的密钥管理方法、装置、设备及存储介质,方法包括:若检测到回滚密钥数据,将该被回滚的密钥数据保存到一预设的键值数据库中,其中,该被回滚的密钥数据包括密钥及其所对应的键值;根据预设时间获取所述键值数据库中的密钥数据;根据所获取的密钥数据的键值判断区块链上是否存在与所述键值对应的数据;以及若存在,利用所获取的密钥数据的密钥解密与所述键值对应的数据并判断是否成功解密;若成功解密,将所获取的密钥数据保存到一预设的关系型数据库中。通过实施本方案可以将数据上链事务与数据的密钥丢失事务分开处理,可以有效防止数据的密钥被丢失,避免因丢失数据密钥而导致的不良后果。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种面向区块链的密钥管理方法、装置、设备及存储介质。
背景技术
在区块链系统保存数据的应用场景中,具体地,在区块链上保存的数据都是需要加密保存的,而对链上数据进行加密保存时,会随机生成密钥,并且将随机生成的密钥保存到一数据库中。现有保存方案都是在向链上写数据的同时,将随机生成的密钥写入到一数据库中保存,然而,如果往链上写数据后,出现入链超时或者因网络原因未有返回亦或者出现网络异常等情况时,保存在一数据库中的与该链上写的数据对应的密钥将会被回滚或者不进行写入密钥这一操作,进而会导致该数据的密钥丢失,此时,若与该被丢失的密钥对应的链上数据成功写入链,那么与该密钥对应的链上数据将会由于丢失密钥而无法解密,该数据也就无法使用。目前常用如下三种处理方案:第一种,直接舍弃该数据,让该数据变成垃圾数据永久保留在该区块链上;第二种,不回滚该数据的密钥,即采用两个事务以使得该数据上链服务与密钥保存服务不在同一个事务中,若出现入链超时或者因网络原因未有返回或异常等情况时,不回滚该密钥;第三种,启动异步线程,即在该数据的密钥回滚后重新写入一条密钥。但是,上述三种做法均会产生不同的问题以及后果,对于第一种,如果被舍弃的这条数据是重要的数据,那么丢失该数据将会导致灾难性后果,即使被舍弃的这条数据不是重要的数据,在链上保存一些垃圾数据也会造成链上存储负担;对于第二种,若采用多个事务分别管理,则对该多个事务的管理会比较麻烦,且若出现异常问题也不容易找到导致该异常问题的根本原因;对于第三种,若启动异步线程,该做法虽然可以满足密钥不丢失,但是无法确认数据是否成功写入链上,而且启动异步线程可能会出现死锁问题,还会导致系统的并发能力降低。
发明内容
本发明实施例提供了一种面向区块链的密钥管理方法、装置、设备及存储介质,可以有效防止区块链上数据的密钥丢失,避免因丢失数据密钥而导致的不良后果。
第一方面,本发明实施例提供了一种面向区块链的密钥管理方法,其包括:若检测到回滚密钥数据,将该被回滚的密钥数据保存到一预设的键值数据库中,其中,该被回滚的密钥数据包括密钥及其所对应的键值;根据预设时间获取所述键值数据库中的密钥数据;根据所获取的密钥数据的键值判断区块链上是否存在与所述键值对应的数据;若所述区块链上存在与所述键值对应的数据,利用所获取的密钥数据的密钥解密与所述键值对应的数据并判断是否成功解密;以及若成功解密,将所获取的密钥数据保存到一预设的关系型数据库中。
第二方面,本发明实施例还提供了一种面向区块链的密钥管理装置,其包括:第一保存单元,用于若检测到回滚密钥数据,将该被回滚的密钥数据保存到一预设的键值数据库中,其中,该被回滚的密钥数据包括密钥及其所对应的键值;第一获取单元,根据预设时间获取所述键值数据库中的密钥数据;第一判断单元,用于根据所获取的密钥数据的键值判断区块链上是否存在与所述键值对应的数据;第一解密单元,用于若所述区块链上存在与所述键值对应的数据,利用所获取的密钥数据的密钥解密与所述键值对应的数据并判断是否成功解密;以及第二保存单元,用于若成功解密,将所获取的密钥数据保存到一预设的关系型数据库中。
第三方面,本发明实施例还提供了一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面的方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时可实现上述第一方面的方法。
本发明实施例提供了一种面向区块链的密钥管理方法、装置、设备及存储介质。本发明实施例能够解决现有防止区块链上的数据的密钥丢失方案中所存在的问题。本发明实施例通过利用键值数据库存储该被回滚的密钥数据,以及通过保存在键值数据库中的密钥数据判断其对应的数据是否成功写入链,若该被回滚的密钥数据对应的数据已经被成功写入链则将该被回滚的密钥数据存储到该预设的关系型数据库中,其中,该键值数据库与该关系型数据库不存在事务冲突,因而可以有效防止区块链上的数据对应的密钥丢失,避免因丢失密钥而导致的不良后果。本发明实施例在区块链写入数据返回失败或者没有响应亦或者出现异常时,均没有直接去查询该数据是否成功写入链,而是将因返回失败或网络异常而导致的被回滚的密钥数据存储到一预设的键值数据库中,根据预设时间获取该密钥数据,进而再去核对该数据是否写入链成功,若成功写入链则将被回滚的密钥数据重新保存到一预设的关系型数据库中,进而可以有效防止密钥丢失,也可以避免因当前网络问题或者系统压力过重情况下导致的误判,例如避免数据已经成功写入链却误判为写入链失败,且在数据上链的整个过程中,将上链事务与异常处理分开,可以保证数据上链的正常进行,不会因出现异常情况而中断该数据上链事务,若出现异常情况则只需要将该被回滚的密钥数据写入键值数据库即可,不需要对该异常情况做过多处理,可以增加代码的可读性,减少冗余代码,方便维护,降低维护成本。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明第一实施例提供的一种面向区块链的密钥管理方法的流程示意图;
图2为本发明第二实施例提供的一种面向区块链的密钥管理方法的流程示意图;
图3为本发明第三实施例提供的一种面向区块链的密钥管理方法的流程示意图;
图4为本发明第一实施例提供的一种面向区块链的密钥管理装置的示意性框图;
图5为本发明第二实施例提供的一种面向区块链的密钥管理装置的示意性框图;
图6为本发明第三实施例提供的一种面向区块链的密钥管理装置的示意性框图;以及
图7为本发明实施例提供的一种计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1,其为本发明第一实施例提供的一种面向区块链的密钥管理方法的示意性流程图。该面向区块链的密钥管理方法可以运行在具备区块链系统的终端设备中,其中,该终端设备可以是智能手机、平板电脑或笔记本电脑等电子设备,也可以是独立的服务器或者多个服务器组成的服务器集群。具体地,该面向区块链的密钥管理方法应用于一区块链系统中,在一实施例中,用于防止区块链上数据的密钥丢失,该方法可包括步骤S101至S105。
S101、若检测到回滚密钥数据,将该被回滚的密钥数据保存到一预设的键值数据库中,其中,该被回滚的密钥数据包括密钥及其所对应的键值。
其中,区块链系统所保存的数据都需要经过加密处理后再写入链上保存的,而对该数据进行加密时,会随机生成密钥,并将对应生成的密钥保存到一关系型数据库中。在一实施例中,例如本实施例中,区块链系统所保存的数据均是由业务系统生成的,业务系统的数据在写入链上保存之前将会调用预设的隐私中间件进行加密处理,具体地,将会调用预设的隐私中间件将所述业务系统的数据转成JSON格式的数据以进行加密处理。
在一实施例中,所述预设的隐私中间件可例如为Sparrow隐私中间件,该Sparrow隐私中间件是一种独立的系统软件或服务程序,介于操作系统和软件应用之间,其中,分布式应用软件通过借助该隐私中间件可以实现在不同的技术之间共享资源。该隐私中间件位于客户端/服务器的操作系统之上,用于管理计算机资源和网络通讯。
其中,JSON的全称为JavaScript Object Notation,即JavaScript对象符号,它是一种轻量级的数据交换格式。JSON的数据格式既适合人来读/写,也适合计算机本身解析和生成。JSON主要是在类似于C的编程语言中广泛使用,所述类似于C的编程语言包括C、C++、C#、Java、Java Script、Perl、Python等。JSON提供了在多种编程语言之间完成数据交换的能力,因此,JSON也是一种非常理想的数据交换格式。其中,JSON主要存在如下两种数据结构:第一种为由key-value对组成的数据结构,这种数据结构在不同的语言中存在不同的实现。例如,在Java Script中为一个对象,在Java中为一种Map结构,在C语言中,则为一个Struct。在其他语言中,可能存在record、dictionary、hash table等实现。第二种为有序集合数据结构,这种数据结构可以在不同编程语言中实现,其中,包括list、vector、数组和序列等实现。
因此,在一实施例中,例如本实施例中,所述业务系统的数据调用Sparrow隐私中间件以进行加密,即将所述业务系统的数据转换成key-value对组成的数据结构以进行加密处理。具体地,将该业务数据格式转换成key-value对组成的数据结构的数据,进而对该数据的value进行加密处理,并将经加密处理后的加密value与该数据的键值key一同写入链上,同时将该数据的键值key以及因对value进行加密处理而随机生成对应的密钥保存到一预设的关系型数据库中,即将该数据对应的密钥数据保存到一预设的关系型数据库中,因此,所述预设的区块链上保存的数据内容包括一数据的键值key及其加密value,而在该关系型数据库对应保存的数据内容包括该数据的键值key及该加密value对应的用于解密的密钥。其中,在业务数据写入链的整个过程中,需要通过HTTP协议与几个系统进行交互,其不可控制的因素较多,当出现上链超时或者返回失败亦或者执行异常等情况时,将会自动回滚该预设的关系型数据库中已保存的密钥数据,然而,返回失败或者出现异常情况并不能判定该数据上链失败。若该数据上链成功,而该数据所对应的密钥被回滚,则会造成该链上数据丢失密钥。因此,在本步骤中,若检测到回滚密钥数据,将该被回滚的密钥数据保存到一预设的键值数据库中,其中,所述密钥数据包括密钥及其所对应的键值key。即将一预设的关系型数据库中被回滚的密钥数据保存到一预设的键值数据库中,其中,该被回滚的密钥数据包括一数据的key以及该加密value对应的密钥。
在一实施例中,所述预设的键值数据库为非关系型数据库,适用于频繁读写、拥有简单数据模型的应用。其中,该键值数据库中存储的值可以是简单的标量值,可例如为整数或者布尔值;也可以是结构化数据类型,可例如为列表和JSON结构的数据。另外,该键值数据库通常具有简单的查询功能,例如允许通过键值来查找一条数据。
其中,在一实施例中,例如本实施例中,所述键值数据库为Redis数据库,该Redis数据库是高性能的key-value数据库,用于保存被回滚的密钥数据。采用Redis数据库是由于该Redis数据库可以将保存的所有密钥数据都读到内存当中,且存取效率非常高,并且还支持将数据持久化到物理磁盘中,即使重启该Redis数据库,保存的所有密钥数据也不会丢失。Redis数据库作为暂存该被回滚的密钥数据的数据库,拥有非常高的性能以及可以支持丰富的数据类型,并且所有操作都是原子性的,且还具备很多重要的特性,可例如为发布订阅以及key失效等。当然,在其它实施例中,所述预设的键值数据库也可以选择为Memcached、Riak、Berkeley DB、Simple DB、Dynamo DB以及甲骨文等数据库中的一种。
S102、根据预设时间获取所述键值数据库中的密钥数据。
具体地,在一实施例中,所述根据预设时间获取所述键值数据库中的密钥数据包括子步骤S102a:通过调用JOD定时任务获取所述键值数据库中的密钥数据。
其中,该JOD定时任务为预先设置的用于定时自动处理一些事务的定时任务,具体地,在程序启动运行时自动启动一独立线程用于计时,当计时到了预设时间后自动执行一段代码以处理一些事情,例如在本实施例中,所述预设时间为5分钟,所述键值数据库为Redis键值数据库,则每计时5分钟后自动获取所述Redis键值数据库中的密钥数据,该密钥数据包括密钥及其对应的键值key。其中,每间隔五分钟自动获取所述Redis键值数据库中的密钥数据,再利用所获取密钥数据到该预设的区块链上查找该区块链上是否存在与所述密钥数据对应的数据,若存在,则表明与该密钥数据对应的数据上链成功,而其密钥数据却被回滚。因此,每间隔预设时间获取所述键值数据库中的密钥数据,进而再根据所获取的密钥数据来查找判断与该密钥数据对应的数据是否成功上链,可以保证较高的成功率,可以有效防止因当前网络问题或者系统压力过重情况下导致的误判,例如,当出现异常情况时,立即获取所述键值数据库中的密钥数据,再根据所述密钥数据到该区块链上查找与该密钥数据对应的数据是否上链成功,此刻若是由于当前网络繁忙或者网络中断亦或者系统压力过重等原因而导致在该区块链上查找不到与该密钥数据对应的数据,进而系统会自动判定为该数据上链不成功,但实际上该数据却是上链成功,因此,每间隔预设时间获取密钥数据可以有效防止因当前网络问题或者系统压力过重情况下导致的误判。
S103、根据所获取的密钥数据的键值判断区块链上是否存在与该键值对应的数据。
具体地,在一实施例中,主要是将业务系统所产生的业务数据转成key-value对组成的数据结构以进行加密,即将该业务数据转成以key-value对组成的数据结构的数据。例如,存在数据A需进行上链事务,需要调用预设的隐私中间件对该数据A的value进行加密处理以得到key-value对组成的数据结构的数据A,具体地,通过对该数据A进行加密处理后得到该数据A的加密value,并随机生成该加密value的密钥,再将该数据A的加密value与键值key以key-value对组成的数据结构写入到一预设的区块链上保存,以及将该数据A的密钥数据保存到一预设的关系型数据库中,即该区块链上保存的数据A包括该数据A的键值key及其加密value,而该关系型数据库保存的该数据A的密钥数据包括该数据A的键值key及该加密value对应的密钥,其中,该区块链上保存的数据A的键值key与该关系型数据库保存的与该数据A对应的密钥数据的key相同,且在区块链上保存的所有数据均存在唯一对应的键值key,因此,可以利用该关系型数据库保存的数据A的密钥数据的键值key到该区块链上查找是否存在与该键值key相同的数据A。因此,在一实施例中,根据预设时间到键值数据库中获取一密钥数据,利用所获取的密钥数据的键值key到区块链上查找以判断确定该区块链上是否存在与该键值key对应的数据,若存在与该键值key对应的数据,则说明该数据实际上是成功写入链的,但该数据所对应的密钥数据由于某种异常被回滚了,因此,需要将该被回滚的密钥数据保存到关系型数据库中以防止该密钥数据因回滚后被丢失。若不存在与该键值key对应的数据,则说明该数据写入链失败,在一实施例中,可以将该数据所对应的密钥数据从该键值数据库中删除,进而该数据可以在下次数据上链时重新进行上链。
S104、若所述区块链上存在与所述键值对应的数据,利用所获取的密钥数据的密钥解密与所述键值对应的数据并判断是否成功解密。
具体地,由步骤S103可知,通过该密钥数据的键值key到该区块链上查找是否存在与该密钥数据的键值key对应的数据,若查找到与该键值key对应的数据则可以利用该密钥数据的密钥解密所查找到的数据,并判断是否成功解密,进而可以确定该密钥数据所对应的数据是否成功写入链。
S105、若成功解密,将所获取的密钥数据保存到一预设的关系型数据库中。
具体地,若该密钥数据的密钥成功解密所查找到的数据,则表明该密钥数据的密钥为该被查找到的数据的密钥,可以解密该被查找到的数据,即该被查找到的数据已经成功写入区块链中,因此,此时只需要将该查找到的数据对应的密钥数据保存到一预设的关系型数据库中,其中,写入区块链中的数据无法被删除、替换、修改,若丢失了密钥,则会变成垃圾数据无法使用,且永久保存在该区块链上。若该密钥数据的密钥无法解密所查找到的数据,则表明该密钥数据的密钥不是该被查找到的数据的密钥。
在上述实施例中,本方案通过将被回滚的密钥数据保存到一预设的键值数据库中,并根据预设时间获取该密钥数据,再利用所获取的密钥数据的键值到预设的区块链上查找,以确定该区块链上是否存在与所获取的密钥数据相对应的数据,若查找到与所获取的密钥数据相对应的数据,则可以利用所获取的密钥数据的密钥解密该被查找的数据以进一步确定该密钥数据的密钥为被查找的数据的密钥,若确定该密钥数据的密钥为被查找的数据的密钥,则可以将该被回滚的密钥数据保存到一预设的关系型数据库中,以有效防止丢失该密钥数据。本发明实施例能够克服现有防止区块链上的数据的密钥丢失方案中所存在的问题。本发明实施例可以有效防止数据的密钥数据丢失,避免因丢失数据的密钥而导致的不良后果。此外,本发明实施例还可以实现数据写入链的整个过程与异常事务处理分开处理,可以在出现异常情况时,直接将因异常情况而导致被回滚的密钥数据存储到一预设的键值数据库中,并根据预设时间自动获取该密钥数据,再根据所获取的密钥数据核对与该密钥数据对应的数据是否成功写入链,避免一出现异常情况直接到该区块链上核对数据是否成功写入链,避免因当前网络问题或者系统压力过重情况下导致的误判;且在数据上链的整个过程中,将上链事务与异常处理分开,可以保证数据上链的正常进行,不会因出现异常情况而中断该数据上链事务,若出现异常情况则只需要将该被回滚的密钥数据写入键值数据库即可,不需要对该异常情况做过多处理,可以增加代码的可读性,减少冗余代码,方便维护,降低维护成本。
请参阅图2,其为本发明第二实施例提供的一种面向区块链的密钥管理方法的流程示意图。具体地,如图2所示,该方法可包括步骤S201-S206。其中步骤S201-S205与上述实施例中的步骤S101-S105类似,在此不再赘述。下面详细说明本实施例中所增加的步骤S206。
S206、若所述区块链上不存在与所述键值对应的数据,删除所述键值数据库中的所述密钥数据。
具体地,由步骤S203可知,根据预设时间到键值数据库中获取一密钥数据,利用所获取的密钥数据的键值key到区块链上查找以判断确定该区块链上是否存在与该键值key对应的数据,若在该区块链上无法查找到与该密钥数据的键值key对应的数据,则表明该密钥数据对应的数据写入区块链失败,因此,将该数据所对应的密钥数据从该键值数据库中删除,进而该数据可以在下次数据上链时重新进行上链。
此外,由步骤S203可知,根据预设时间到键值数据库中获取一密钥数据,利用所获取的密钥数据的键值key到区块链上查找以判断确定该区块链上是否存在与该键值key对应的数据,若存在与该键值key对应的数据,则说明该数据实际上是成功写入链的,但该数据所对应的密钥数据由于某种异常被回滚了,因此,需要将该被回滚的密钥数据保存到关系型数据库中以防止该密钥数据因回滚后被丢失,其中,当将该被回滚的密钥数据保存到一预设的关系型数据库时,将该密钥数据从键值数据库中删除。
在上述实施例中,本方案通过根据预设时间到键值数据库中获取一密钥数据,利用所获取的密钥数据的键值key到区块链上查找以判断确定该区块链上是否存在与该键值key对应的数据,若存在与该键值key对应的数据,则说明该数据实际上是成功写入链的,但该数据所对应的密钥数据由于某种异常被回滚了,因此,需要将该被回滚的密钥数据保存到一预设的关系型数据库中以防止该密钥数据因回滚后被丢失,其中,当该被回滚的密钥数据保存到该关系型数据库时,将该被回滚的密钥数据从该键值数据库中删除;若不存在与该键值key对应的数据,则说明该数据写入链失败,此刻只需要将该被回滚的密钥数据从该键值数据库中删除即可。本发明实施例能够克服现有防止区块链上的数据的密钥丢失方案中所存在的问题。本发明实施例可以有效防止数据的密钥数据丢失,避免因丢失数据的密钥而导致的不良后果。此外,本发明实施例还可以实现数据写入链的整个过程与异常事务处理分开处理,可以在出现异常情况时,直接将因异常情况而导致被回滚的密钥数据存储到一预设的键值数据库中,并根据预设时间自动获取该密钥数据,再根据所获取的密钥数据核对与该密钥数据对应的数据是否成功写入链,避免一出现异常情况直接到该区块链上核对数据是否成功写入链,避免因当前网络问题或者系统压力过重情况下导致的误判;且在数据上链的整个过程中,将上链事务与异常处理分开,可以保证数据上链的正常进行,不会因出现异常情况而中断该数据上链事务,若出现异常情况则只需要将该被回滚的密钥数据写入键值数据库即可,不需要对该异常情况做过多处理,当对该异常情况处理过后,只需要将该被回滚的密钥数据从该键值数据库中删除即可,可以避免重复处理异常情况。
请参阅图3,其为本发明第三实施例提供的一种面向区块链的密钥管理方法的流程示意图。具体地,如图3所示,该方法可包括步骤S301-S310。其中步骤S301-S306与上述实施例中的步骤S201-S206类似,在此不再赘述。下面详细说明本实施例中所增加的步骤S307-步骤S310。
S307、获取HTTP返回码并根据所述HTTP返回码判断是否返回成功。
具体地,在业务数据写入链的整个过程中,需要通过HTTP协议与几个系统进行交互,可例如为所述预设的隐私中间件通过HTTP协议调用交易服务器的写入链接口,其中,该HTTP协议将有目的地返回HTTP返回码,并且该HTTP返回码可以根据用户实际应用场景的需求进行自定义设置,当该HTTP返回码表示失败时,保存在该关系型数据库中的密钥数据将会自动回滚,例如,若存在数据A写入链,当该数据A返回表示失败的HTTP返回码时,该数据A的密钥数据将会自动回滚。
其中,所述HTTP返回码包括多个状态码,该多个状态码用于表示服务器在处理请求时发生的错误。即该多个状态码用于表示用于数据上链过程的多个系统在处理请求时发生的错误。这些错误可能是服务器本身的错误,而不是请求出错。所述多个状态码可例如为500(服务器内部错误)、501(尚未实施)、502(错误网关)、503(服务不可用)、504(网关超时)以及505(HTTP版本不受支持)等。其中,在一实施例中,可以事先设置数据写入链的整个过程所需时间为15秒,若数据写入链的整个过程所花费时间超过15秒,则判定该数据入链超时,即该数据入链失败,将会返回504(网关超时)这一HTTP返回码。
S308、若返回成功,判断是否存在调用异常。
具体地,在一实施例中,若在HTTP协议调用时抛出一异常,使得程序无法继续执行时也会自动回滚密钥数据。
S309、若返回异常或存在调用异常,回滚密钥数据并判定为检测到回滚密钥数据。步骤S309之后,紧接着执行步骤S301及后续步骤。
其中,所述步骤S301包括:将该被回滚的密钥数据保存到一预设的键值数据库中,其中,该被回滚的密钥数据包括密钥及其所对应的键值。
S310、若不存在调用异常,不回滚密钥数据并判定为检测不到回滚密钥数据。
请参阅图4,其为本发明第一实施例提供的一种面向区块链的密钥管理装置100的示意性框图。如图4所示,该面向区块链的密钥管理装置100对应于图1所示的面向区块链的密钥管理方法。该面向区块链的密钥管理装置100包括用于执行上述面向区块链的密钥管理方法的单元,该面向区块链的密钥管理装置100可以被配置于具备区块链系统的终端设备中。其中,该终端设备可以是智能手机、平板电脑或笔记本电脑等电子设备,也可以是独立的服务器或者多个服务器组成的服务器集群。具体地,该面向区块链的密钥管理方法应用于一区块链系统中。具体地,请参阅图4,该面向区块链的密钥管理装置100包括第一保存单元101、第一获取单元102、第一判断单元103、第一解密单元104以及第二保存单元105。
所述第一保存单元101用于若检测到回滚密钥数据,将该被回滚的密钥数据保存到一预设的键值数据库中,其中,该被回滚的密钥数据包括密钥及其所对应的键值。
所述第一获取单元102用于根据预设时间获取所述键值数据库中的密钥数据。
在一实施例中,第一获取单元102包括:第一获取子单元102a。其中第一获取子单元102a,用于通过调用JOD定时任务获取所述键值数据库中的密钥数据。
所述第一判断单元103用于根据所获取的密钥数据的键值判断区块链上是否存在与所述键值对应的数据。
所述第一解密单元104用于若所述区块链上存在与所述键值对应的数据,利用所获取的密钥数据的密钥解密与所述键值对应的数据并判断是否成功解密。
所述第二保存单元105用于若成功解密,将所获取的密钥数据保存到一预设的关系型数据库中。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述面向区块链的密钥管理装置100和各单元的具体实现过程以及效果,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
请参阅图5,其为本发明第二实施例提供的一种面向区块链的密钥管理装置200的示意性框图。如图5所示,本发明第二实施例提供的一种面向区块链的密钥管理装置200是在上述实施例的基础上增加了第一删除单元206,即所述装置200包括第三保存单元201、第二获取单元202、第二判断单元203、第二解密单元204、第四保存单元205以及第一删除单元206。其中,该第三保存单元201、第二获取单元202、第二判断单元203、第二解密单元204以及第四保存单元205与上述实施例中的第一保存单元101、第一获取单元102、第一判断单元103、第一解密单元104以及第二保存单元105类似,由于其应用过程以及相应功能与上述实施例中所对应的单元类似,在此不再赘述。
所述第一删除单元206用于若所述区块链上不存在与所述键值对应的数据,删除所述键值数据库中的所述密钥数据。此外,所述第一删除单元206还用于当将该被回滚的密钥数据保存到一预设的关系型数据库时,将该密钥数据从键值数据库中删除。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述装置200和各单元的具体实现过程以及效果,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
请参阅图6,其为本发明第三实施例提供的一种面向区块链的密钥管理装置300的示意性框图。如图6所示,本发明第三实施例提供的一种面向区块链的密钥管理装置300是在上述实施例的基础上增加了第四判断单元307、第五判断单元308、第一判定单元309以及第二判定单元310,即所述装置300包括第五保存单元301、第三获取单元302、第三判断单元303、第三解密单元304、第六保存单元305、第二删除单元306、第四判断单元307、第五判断单元308、第一判定单元309以及第二判定单元310。其中,该第五保存单元301、第三获取单元302、第三判断单元303、第三解密单元304、第六保存单元305以及第二删除单元306与上述实施例中的第三保存单元201、第二获取单元202、第二判断单元203、第二解密单元204、第四保存单元205以及第一删除单元206类似,由于其应用过程以及相应功能与上述实施例中所对应的单元类似,在此不再赘述。
所述第四判断单元307用于获取HTTP返回码并根据所述HTTP返回码判断是否返回成功。
所述第五判断单元308用于若返回成功,判断是否存在调用异常。
所述第一判定单元309用于若返回异常或存在调用异常,回滚密钥数据并判定为检测到回滚密钥数据。
所述第二判定单元310用于若不存在调用异常,不回滚密钥数据并判定为检测不到回滚密钥数据。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述装置300和各单元的具体实现过程以及效果,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述装置可以实现为一种计算机程序的形式,该计算机程序可以在如图7所示的计算机设备上运行。
请参阅图7,其为本发明实施例提供的一种计算机设备的示意性框图。该计算机设备600可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑和个人数字助理等支持区块链系统运行的电子设备。服务器为支持区块链系统运行的服务器,该服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图7,该计算机设备600包括通过系统总线601连接的处理器602、存储器以及网络接口605,其中,存储器可以包括非易失性存储介质603和内存储器604。
该非易失性存储介质603可存储操作系统6031和计算机程序6032。该计算机程序6032包括程序指令,该程序指令被执行时,可使得处理器602执行一种面向区块链的密钥管理方法。
该处理器602用于提供计算和控制能力,以支撑整个计算机设备600的运行。
该内存储器604为非易失性存储介质603中的计算机程序6032的运行提供环境,该计算机程序6032被处理器602执行时,可使得处理器602执行一种面向区块链的密钥管理方法。
该网络接口605用于与其它设备进行网络通信。本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备600的限定,具体的计算机设备600可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器602用于运行存储在存储器中的计算机程序6032,以实现如下步骤:若检测到回滚密钥数据,将该被回滚的密钥数据保存到一预设的键值数据库中,其中,该被回滚的密钥数据包括密钥及其所对应的键值;根据预设时间获取所述键值数据库中的密钥数据;根据所获取的密钥数据的键值判断区块链上是否存在与所述键值对应的数据;若所述区块链上存在与所述键值对应的数据,利用所获取的密钥数据的密钥解密与所述键值对应的数据并判断是否成功解密;以及若成功解密,将所获取的密钥数据保存到一预设的关系型数据库中。
在一实施例中,处理器602在实现所述根据所获取的密钥数据的键值判断区块链上是否存在与该键值对应的数据的步骤之后,具体还实现如下步骤:若所述区块链上不存在与所述键值对应的数据,删除所述键值数据库中的所述密钥数据。
在一实施例中,处理器602在实现所述根据预设时间获取所述键值数据库中的密钥数据的步骤时,具体实现如下步骤:通过调用JOD定时任务获取所述键值数据库中的密钥数据。
在一实施例中,处理器602在实现所述若检测到回滚密钥数据,将该被回滚的密钥数据保存到一预设的键值数据库中的步骤之前,具体还实现如下步骤:获取HTTP返回码并根据所述HTTP返回码判断是否返回成功;若返回成功,判断是否存在调用异常;若返回异常或存在调用异常,回滚密钥数据并判定为检测到回滚密钥数据;以及若不存在调用异常,不回滚密钥数据并判定为检测不到回滚密钥数据。
在一实施例中,处理器602在实现所述若成功解密,将所获取的密钥数据保存到一预设的关系型数据库中的步骤之后,具体还实现如下步骤:删除所述键值数据库中的所述密钥数据。
在一实施例中,处理器602在实现所述面向区块链的密钥管理方法时,所述键值数据库为Redis数据库。
应当理解,在本发明实施例中,处理器602可以是中央处理单元(CentralProcessing Unit,CPU),该处理器602还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。
因此,本发明还提供一种计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序包括程序指令。该程序指令被处理器执行时使处理器执行如上所述的面向区块链的密钥管理方法。
所述存储介质可以是U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的存储介质。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。例如,以上所描述的系统实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例系统中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。
该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种面向区块链的密钥管理方法,其特征在于,包括:
若检测到回滚密钥数据,将该被回滚的密钥数据保存到一预设的键值数据库中,其中,该被回滚的密钥数据包括密钥及业务数据对应的键值;
根据预设时间获取所述键值数据库中的密钥数据;
根据所获取的密钥数据的键值判断区块链上是否存在与所述键值对应的数据;
若所述区块链上存在与所述键值对应的数据,利用所获取的密钥数据的密钥解密与所述键值对应的数据并判断是否成功解密;以及
若成功解密,将所获取的密钥数据保存到一预设的关系型数据库中。
2.根据权利要求1所述的面向区块链的密钥管理方法,其特征在于,所述根据所获取的密钥数据的键值判断区块链上是否存在与该键值对应的数据的步骤之后,还包括:
若所述区块链上不存在与所述键值对应的数据,删除所述键值数据库中的所述密钥数据。
3.根据权利要求1所述的面向区块链的密钥管理方法,其特征在于,所述根据预设时间获取所述键值数据库中的密钥数据,包括:
通过调用JOD定时任务获取所述键值数据库中的密钥数据。
4.根据权利要求1所述的面向区块链的密钥管理方法,其特征在于,所述若检测到回滚密钥数据,将该被回滚的密钥数据保存到一预设的键值数据库中的步骤之前,还包括:
获取HTTP返回码并根据所述HTTP返回码判断是否返回成功;
若返回成功,判断是否存在调用异常;
若返回异常或存在调用异常,回滚密钥数据并判定为检测到回滚密钥数据;以及
若不存在调用异常,不回滚密钥数据并判定为检测不到回滚密钥数据。
5.根据权利要求1所述的面向区块链的密钥管理方法,其特征在于,所述若成功解密,将所获取的密钥数据保存到一预设的关系型数据库中的步骤之后,还包括:
删除所述键值数据库中的所述密钥数据。
6.根据权利要求1所述的面向区块链的密钥管理方法,其特征在于,所述键值数据库为Redis数据库。
7.一种面向区块链的密钥管理装置,其特征在于,包括:
第一保存单元,用于若检测到回滚密钥数据,将该被回滚的密钥数据保存到一预设的键值数据库中,其中,该被回滚的密钥数据包括密钥及业务数据对应的键值;
第一获取单元,用于根据预设时间获取所述键值数据库中的密钥数据;
第一判断单元,用于根据所获取的密钥数据的键值判断区块链上是否存在与所述键值对应的数据;
第一解密单元,用于若所述区块链上存在与所述键值对应的数据,利用所获取的密钥数据的密钥解密与所述键值对应的数据并判断是否成功解密;以及
第二保存单元,用于若成功解密,将所获取的密钥数据保存到一预设的关系型数据库中。
8.根据权利要求7所述的面向区块链的密钥管理装置,其特征在于,还包括:
第一删除单元,用于若所述区块链上不存在与所述键值对应的数据,删除所述键值数据库中的所述密钥数据。
9.一种计算机设备,其特征在于,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-6中任一项所述的面向区块链的密钥管理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时可实现如权利要求1-6中任一项所述的面向区块链的密钥管理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910429421.9A CN110297822B (zh) | 2019-05-22 | 2019-05-22 | 面向区块链的密钥管理方法、装置、设备及存储介质 |
PCT/CN2019/103264 WO2020232892A1 (zh) | 2019-05-22 | 2019-08-29 | 面向区块链的密钥管理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910429421.9A CN110297822B (zh) | 2019-05-22 | 2019-05-22 | 面向区块链的密钥管理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110297822A CN110297822A (zh) | 2019-10-01 |
CN110297822B true CN110297822B (zh) | 2023-06-02 |
Family
ID=68027065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910429421.9A Active CN110297822B (zh) | 2019-05-22 | 2019-05-22 | 面向区块链的密钥管理方法、装置、设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110297822B (zh) |
WO (1) | WO2020232892A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112016113B (zh) * | 2020-09-28 | 2024-04-16 | 同盾控股有限公司 | 数据加解密方法、装置及系统 |
CN114615025B (zh) * | 2022-02-22 | 2024-05-03 | 中国建设银行股份有限公司 | 一种密钥同步处理方法和装置 |
CN115334117B (zh) * | 2022-08-12 | 2024-05-03 | 南方电网科学研究院有限责任公司 | 一种适用于电力需求响应的数据旁路上链系统及方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108629027A (zh) * | 2018-05-09 | 2018-10-09 | 深圳壹账通智能科技有限公司 | 区块链上用户数据库重建方法、装置、设备及介质 |
CN108959523A (zh) * | 2018-06-28 | 2018-12-07 | 北京首汽智行科技有限公司 | 一种基于区块链技术的音乐播放方法和播放器 |
CN109697371A (zh) * | 2018-12-12 | 2019-04-30 | 泰康保险集团股份有限公司 | 数据库管理方法、装置、介质及电子设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101720268B1 (ko) * | 2015-10-26 | 2017-03-27 | (주)아이알엠 | 환자정보 보호를 위한 의료영상의 클라우드 데이터베이스 구축 및 판독 방법 |
US20180173745A1 (en) * | 2016-12-21 | 2018-06-21 | At&T Intellectual Property I, L.P. | Systems and methods to achieve sequential consistency in replicated states without compromising performance in geo-distributed, replicated services |
CN109101528A (zh) * | 2018-06-21 | 2018-12-28 | 深圳市买买提信息科技有限公司 | 数据处理方法、数据处理装置及电子设备 |
-
2019
- 2019-05-22 CN CN201910429421.9A patent/CN110297822B/zh active Active
- 2019-08-29 WO PCT/CN2019/103264 patent/WO2020232892A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108629027A (zh) * | 2018-05-09 | 2018-10-09 | 深圳壹账通智能科技有限公司 | 区块链上用户数据库重建方法、装置、设备及介质 |
CN108959523A (zh) * | 2018-06-28 | 2018-12-07 | 北京首汽智行科技有限公司 | 一种基于区块链技术的音乐播放方法和播放器 |
CN109697371A (zh) * | 2018-12-12 | 2019-04-30 | 泰康保险集团股份有限公司 | 数据库管理方法、装置、介质及电子设备 |
Non-Patent Citations (1)
Title |
---|
一种改进的高安全性密钥恢复机制;张德刚等;《计算机测量与控制》;20081125(第11期);174-176+179 * |
Also Published As
Publication number | Publication date |
---|---|
CN110297822A (zh) | 2019-10-01 |
WO2020232892A1 (zh) | 2020-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3776208B1 (en) | Runtime self-correction for blockchain ledgers | |
US9753954B2 (en) | Data node fencing in a distributed file system | |
US8010514B2 (en) | System and method for a distributed object store | |
CN110297822B (zh) | 面向区块链的密钥管理方法、装置、设备及存储介质 | |
US9778998B2 (en) | Data restoration method and system | |
US7096391B2 (en) | Error message suppression system and method | |
US20070294320A1 (en) | Automated priority restores | |
US9753792B2 (en) | Method and system for byzantine fault tolerant data replication | |
US10819641B2 (en) | Highly available servers | |
US11556400B2 (en) | Handling large messages via pointer and log | |
JP2021520574A (ja) | 誤り訂正符号に基づく共有されたブロックチェーンデータの記憶のデータセキュリティ | |
US10795910B2 (en) | Robust communication system for guaranteed message sequencing with the detection of duplicate senders | |
US9330153B2 (en) | System, method, and computer readable medium that coordinates between devices using exchange of log files | |
CN111338834B (zh) | 数据存储方法和装置 | |
CN113326006A (zh) | 一种基于纠删码的分布式块存储系统 | |
CN110121694B (zh) | 一种日志管理方法、服务器和数据库系统 | |
US8719622B2 (en) | Recording and preventing crash in an appliance | |
US20190065255A1 (en) | Accessing data in accordance with an execution deadline | |
CN117178265A (zh) | 基于快照的数据损坏检测 | |
US11093290B1 (en) | Backup server resource-aware discovery of client application resources | |
US7363322B2 (en) | Methods and systems for performing reliable asynchronous notification of high-level document operations | |
CN108475211B (zh) | 无状态系统和用于获得资源的系统 | |
US9471409B2 (en) | Processing of PDSE extended sharing violations among sysplexes with a shared DASD | |
CN108959405B (zh) | 数据的强一致性读取方法及终端设备 | |
JP2004013867A (ja) | 複製データベースシステム、データベース装置及びそれに用いるデータベース更新方法並びにそのプログラム |
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 |