CN115567550A - 一种基于区块链和国密算法的文件信息数据存储方法 - Google Patents
一种基于区块链和国密算法的文件信息数据存储方法 Download PDFInfo
- Publication number
- CN115567550A CN115567550A CN202211161053.2A CN202211161053A CN115567550A CN 115567550 A CN115567550 A CN 115567550A CN 202211161053 A CN202211161053 A CN 202211161053A CN 115567550 A CN115567550 A CN 115567550A
- Authority
- CN
- China
- Prior art keywords
- file
- node
- data
- block chain
- hash 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000013500 data storage Methods 0.000 title claims abstract description 16
- 230000006870 function Effects 0.000 claims description 17
- 238000005192 partition Methods 0.000 claims description 16
- 230000000007 visual effect Effects 0.000 claims description 11
- 238000012544 monitoring process Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 8
- 238000012163 sequencing technique Methods 0.000 claims description 7
- 238000001514 detection method Methods 0.000 claims description 6
- 239000004744 fabric Substances 0.000 claims description 4
- 230000007246 mechanism Effects 0.000 claims description 4
- 230000003993 interaction Effects 0.000 claims description 2
- 210000001503 joint Anatomy 0.000 claims description 2
- 238000005516 engineering process Methods 0.000 description 8
- 238000012795 verification Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000012800 visualization Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000013079 data visualisation Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000000275 quality assurance Methods 0.000 description 1
- 238000004804 winding Methods 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/22—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks comprising specially adapted graphical user interfaces [GUI]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于区块链和国密算法的文件信息数据存储方法,为了更安全便捷的存储文件,防止被篡改,保护用户个人隐私和利益。将区块链和国密算法结合起来,使用去中心化的公开账本区块链做为存储工具。使用国密SM3哈希算法生成哈希值,提取文件信息,可占用较小的存储空间记录关键信息。采用POST请求的方式,安全快捷的传输数据。区块链后台***中使用Kafka算法高效完成节点之间的共识,使数据一经上链便无法篡改。使用HTML\CSS\JavaScript搭建前端,查询到数据以及对应的区块信息在前端界面显示。最终能安全有效便捷的存储文件信息数据。
Description
技术领域
本发明属于区块链技术领域、计算机网络通信领域、JAVA软件开发领域等,***技术应用于文件数据存储领域、数据传输领域以及文件关键信息提取领域。
背景技术
随着互联网普及程度的不断提高和通信技术的高速发展,关键信息数据的安全问题引起了社会的广泛关注。计算机文件是人们日常生活工作中的必需品,其存储安全关系到用户的个人隐私和用人单位的经济利益,甚至涉及到一些重点单位的核心机密。在数据存储技术不断改革创新的环境下,数据存储的安全性成为人们关注的主要问题。即,用户希望使用具有安全质量保障的存储***和简单便捷高效的存储方式。
区块链本质上是一个去中心化的公开账本。它使用了分布式数据存储、点对点传输、共识机制、加密算法、智能合约,来保证平台的公正,具有去中心化、不可篡改、全程留痕、可追溯、集体维护、公开透明、多节点互动共享等特点。把随时间不断增长的数据打包到各个区块里,所有区块按照时间顺序串起来形成一条链。基于文件的安全性要求和技术的实现性,使用HyperLedgerFabric联盟链作为区块链平台,将文件内容以哈希值的形式进行保存上链。区块内以哈希值绑定交易内容,交易内文件哈希值与文件内容一一对应,从而使链上所记录的文件内容不可篡改,而具备可追溯能力。由此实现一种基于区块链技术和文件哈希处理相结合的存储文件方法,保证文件的可靠性。
国产密码散列函数(Cryptographic hash function,SM3),是我国采用的一种密码散列函数标准,主要用于数字签名及验证、消息认证码生成及验证、随机数生成等。哈希值校验技术是一种基于特征值的校验算法,通过特定的算法对电子文件进行运算获得电子文件的“特征值”,犹如人的指纹。不同电子文件的特征值各不相同。主要用于数字签名及验证、消息认证码生成及验证、随机数生成等。在信息安全中,有许多重要的应用,都使用了密码散列函数来实现,例如数字签名,消息认证码。
一个理想的密码散列函数应该有四个主要的特性:对于任何一个给定的消息,它都很容易就能运算出散列数值。难以由一个已知的散列数值,去推算出原始的消息。在不更动散列数值的前提下,修改消息内容是不可行的。对于两个不同的消息,它不能给出相同的散列数值。对长度为n(n<264)比特的消息m,SM3杂凑算法经过填充和迭代压缩,生成杂凑值,杂凑值长度为256比特。假设消息m的长度为n比特。首先将比特“1”添加到消息的末尾,再添加k个“0”,k是满足n+1+k≡448mod512的最小的非负整数。然后再添加一个64位比特串,该比特串是长nl的二进制表示。填充后的消息m′的比特长度为512的倍数。此后再经过迭代压缩,消息扩展,压缩函数,生成杂凑值的方式将消息m进行加密处理。
这种运算过程不受电子文件格式的限制,凡是电子文件,都可以使用这种算法计算特征值。以HTTP的POST请求发送数据,使用Node.js将数据转换为上传至区块链的标准格式。
使用超文本标记语言(Hyper Text Markup Language,HTML)、层叠样式表(Cascading Style Sheets,CSS)、JS脚本语言(JavaScript,JS)搭建前端可视化页面。HTML是一种标记语言,可以说明文字,图形、动画、声音、表格、链接等。CSS是一种用来表现HTML文件样式的计算机语言。JavaScript是一种具有函数优先的轻量级,解释型或即时编译型的编程语言。
发明内容
本发明旨在结合上述两种技术搭建一个具有安全质量保障的存储***和简单便捷高效的文件信息存储***。目前,现代互联网技术的发展促进使得文件信息数据存储的质量与安全受到多重因素的影响,因此,建立安全的文件关键数据信息提取,传输,存储***是保障数据安全和用户权益的有效手段。传统的文件存储***存在安全性低、易被篡改、存储空间有限从而大大降低文件存储量,存储质量和安全性等问题。
为解决上述问题,本发明提出了基于区块链和国密算法文件的文件信息存储方法。***支持文件提交,包括哈希值计算,提取文件名和文件路径,生成文件ID、客户端发送、服务器接收、处理数据、上链五个步骤。配置客户端使用国密SM3算法生成哈希值,提取文件文件名、文件路径,生成文件ID并发送文件相关数据,接收返回值(区块高度、区块创建时间(文件上链时间)、区块哈希值、前一区块哈希值、上链使用智能合约等信息)。通过HTTP协议中POST收发实现两端的连接。服务器用于接收文件相关数据,对数据进行判断和处理后上链,并在区块链中进行共识和存储。只存储文件哈希值等关键信息可以占用更少的存储空间,提高传输效率,不直接存储文件可以进一步提高文件保密性。可视化前端提供查询文件关键数据信息和对应区块信息功能。
浏览器可视化前端使用JavaScript/HTML/CSS的开发框架进行实现,为文件查询功能建立前端可视化界面。页面布局中,分别显示区块链信息,用户管理,文件查询。再查询页面中,可以分别使用通过文件哈希值查询,通过文件名查询,通过文件ID查询三种方法进行查询。输入关键字检索完毕出现数据结果,包括文件哈希值、文件名、文件路径及文件ID。点击查看按钮,可以看到本条信息对应区块的区块信息,包括区块高度、区块创建时间(文件上链时间)、区块哈希值、前一区块哈希值、上链使用智能合约。区块链前端***的实现将为用户提供一个直观、可靠的文件数据区块链查询平台。通过对数据的展示能够查看文件关键信息变化情况,从而在数据出现被改变的第一时间能够被发现并记录。***框图如图1所示。
***架构大致分为三部分,即数据接入层(JAVA发送端),数据服务层(区块链后端数据接口),数据应用层(区块链可视化前端界面)。
数据接入层的功能包括选择文件,生成哈希值,将关键信息传送至接收端等,具体流程如下:
一、数据接入层
步骤1:拖入待存储文件(任何种类的电子文件均可),使用SM3算法计算文件哈希值,哈希计算值仅与文件内容有关,例如文本文件中的文字内容,视频文件中的录像等。与文件名称、文件路径、文件格式无关;在JAVA发送端启动软件,点击“生成哈希值”进入文件选择界面,选择文件并确认发送。
步骤1.1:选择需要存储到区块链***的文件。
步骤1.2:采用SM3算法生成文件哈希值。提取文件名和文件路径,生成文件ID。
以C:\Users\zyz\Desktop路径下的test1.zip为例。
生成哈希值格式为:ED54A4DDDE624302F278ABB740CCE073627383C6D7643481E6D的十六进字符串。
提取到的文件名和文件路径为:test1.zip C:\Users\zyz\Desktop
生成的文件ID为:12345ABCDEabcde
步骤2:发送和接收反馈:开启文件监听,通过HTTP协议发送POST请求。
步骤2.1:向区块链后台接口发送文件哈希值、文件名、文件路径、文件ID等四个数据。
步骤2.2:接受区块链后台的返回值,包括区块高度、区块创建时间(文件上链时间)、区块哈希值、前一区块哈希值、上链使用智能合约。
二、数据服务层
在数据服务层(区块链)将接收到数据上链,并向发送端发送返回值:
步骤3:接收:服务器端以req.params方式获取请求参数,实时监听数据;
步骤3.1:在区块链后台开启监听的端口8088,以req.params方式获取请求参数。
步骤4:处理数据,将接收到的数据转为十六进制字符串,并进行urlencode编码,生成处理后可以进行上链的JSON数据。
步骤4.1:由于上传至区块链的数据格式必须是JSON字符串,首先对接受到的数据进行处理。将接收到的文件路径进行urlencode编码,将“:”“\”的特殊符号转为“%3A”,“%5C”,结果为:C%3A%5CUsers%5Czyz%5CDesktop%5Ctest1.zip。而后转为十六进制字符串。
步骤4.2:将接收到的文件名称转为16进制字符串。
步骤4.3:由于接收到的文件哈希值和文件ID已经为16进制字符串,所以不做处理。
步骤4.4:将文件哈希值、文件路径、文件名、文件ID拼接,生成新的数据文件唯一身份信息码。
步骤4.5:定义一个JSON数组,包括文件哈希值、文件路径、文件名、文件ID、数据文件唯一身份信息码。将JSON数组从节点一向区块链中上传。
上链数据格式示例:
"hashval":"ED54A4DDDE624302F278ABB740CC99953C2AA1B5BE073627383C6D7643481E6D",
"filepath":"C%3A%5CUsers%5Czyz%5CDesktop%5Ctest1.zip",
"fileName":"test1.zip",
"fileID":"12345ABCDEabcde"
"fileOnlyId":"ED54A4DDDE624302F278ABB740CC99953C2AA1B5BE073627383C6D7643481E6DC%3A%5CUsers%5Czyz%5CDesktop%5Ctest1.ziptest1.zip12345ABCDEabcde"
步骤5:上链:将处理后的数据上链,本发明中的区块链共设置三个节点;
步骤5.1:区块链后台向背书节点(节点一)发送交易(交易内容包括文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息码五个数据),背书节点验证交易,将经过背书节点(节点一)签名的执行结果返回给区块链后台。
步骤5.2:区块链后台向排序服务发送交易。排序服务生成新的区块。
步骤5.3:将文件哈希值、文件名、文件路径、文件ID、文件唯一身份信息码写入区块中并对区块进行加密,生成区块哈希值,并发送给主节点(节点一)。
步骤5.4:主节点(节点一)将接收到已经写入数据的区块发送到Kafka集群中,通过Kafka共识算法进行共识。本步骤中节点一是提交节点,作为topic的生产者,节点二、节点三作为消费者。
步骤5.5:在topic中设置分区,使分区均匀分布在节点上,每个消费者(节点二和节点三)至少分配一个分区。
步骤5.6:将包含文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息码数据的区块投递到为节点二和节点三分配的指定分区。
步骤5.7:节点二通过读取分区中的数据从Kafka集群拉取包含文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息数据的区块,检验完成过后进行同步和共识。
步骤5.8:节点三通过读取分区中的数据从Kafka集群拉取包含文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息码数据的区块,检验完成后进行同步和共识。
步骤5.9:各节点完成共识后,将写入了文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息数据的区块加入到区块链中。
步骤6:返回:反馈新入链区块的信息,向发送端发送返回值,包括区块高度、区块创建时间(文件上链时间)、区块哈希值、前一区块哈希值、上链使用智能合约。
三、数据应用层
数据应用层供管理员用三种方式查询区块链中的文件信息:
步骤7:前端查询文件关键数据和对应区块信息。
步骤7.1:在区块链后台启动端口3000,进入可视化前端,根据在前端选择的查询方式,后台调用智能合约中提供的富查询方法,通过关键词查询文件关键数据信息和对应区块信息。
步骤7.2:查询到结果后,经过url解码,转换时区,优化数据显示格式(将转为十六进制字符串的数据转换回原有格式)后,在前端界面显示。区块链可视化***运行逻辑框图如图2所示。
由于本***中区块链的开发使用的是Node.js语言,对于Node.js语言来说其自身支持在本地直接建立Web服务器后端,因此数据可视化的浏览器服务器与区块链服务器使用同一个硬件服务器地址,并在不同端口下建立各自的Web服务器。
具体的字段由表1、2、3所示。
表1 JAVA发送端生成、提取的数据
表2上链数据
表3区块信息(返回值)数据
附图说明
图1为区块链***框图。
图2为区块链***运行逻辑。
图3为监听上链端口启动成功截图。
图4为区块链启动流程。
图5为JAVA客户发送端流程。
图6为Kafka***示意图。
图7为返回值示例。
图8为区块链后台共识上链流程。
图9为可视化前端查询逻辑流程。
具体实施方式
下面结合附图3-9和实施例对本发明做进一步说明:
本发明实现了一种基于区块链哈希算法搭建的文件数据关键信息存储***。
步骤1:搭建区块链,启动区块链***中的各个节点,保证共识功能正常。本发明采取一个主节点,两个从节点的区块链结构。
步骤1.1:开启节点一,启动证书服务和排序服务,调用证书服务(CA)服务,进行注册和登记,并获取身份证书。节点一作为背书节点、提交节点和主节点,负责与其他两个节点进行共识。
步骤1.2:开启节点二,启动排序服务,负责与节点一、节点三组成区块链结构,进行共识。
步骤1.3:开启节点三,启动排序服务,负责与节点一、节点三组成区块链结构,进行共识。
步骤2:创建并加入通道。
步骤2.1:创建通道,采用通道机制可使区块链中的特定节点加入通道进行交互,应用程序可以直接通过通道与节点进行沟通。通道相对独立的环境可以大大增加吞吐量和交易速率。
步骤2.2:分别操作三个节点加入到通道中。
步骤3:安装智能合约。
步骤3.1:在智能合约中设定了存储在区块链中的各项文件关键数据,设定了提供给用户的按哈希值、按文件名、按文件ID三种查询方法。
步骤3.2:根据Fabric链码中投票、查询、上传等功能,在智能合约脚本中实现相应的功能,采用富查询的方式为用户提供多个查询接口。完成区块链和前端可视化界面的对接。
步骤3.3:智能合约通过点到点的方式部署在区块链中,区块链中各个节点都收到一份有效合约并进行实例化,保存在对应的区块中,使得各个节点都可安全有效地运用该智能合约。
步骤4:使用Node.Js在区块链后台设置两个监听端口,分别为接收数据端口和前端开启端口,以此与发送端,可视化前端连接。
步骤4.1:在区块链服务器后台开启监听的端口8088,以req.params方式获取请求参数,接收数据并上链。实时监听数据开启成功的结果如图3所示。
步骤4.2:在区块链服务器后台开启3000端口,开启前端,与前端界面进行交互。
区块链启动流程如图4所示。
步骤5:在JAVA发送端启动软件,点击“生成哈希值”进入文件选择界面,选择文件并确认发送。
步骤5.1:选择需要存储到区块链***的文件。
步骤5.2:采用国密SM3算法生成文件哈希值。提取文件名和文件路径,生成文件ID。
以C:\Users\zyz\Desktop路径下的test1.zip为例。
生成哈希值格式为:ED54A4DDDE624302F278ABB740CCE073627383C6D7643481E6D的十六进字符串。
提取到的文件名和文件路径为:test1.zip C:\Users\zyz\Desktop
生成的文件ID为:12345ABCDEabcde
步骤5.3:通过HTTP的POST请求向区块链后台接口发送数据。JAVA客户发送端流程如图5所示。
步骤6:区块链后台监听端口8088接收端口接收到数据,将数据转为十六进制字符串,并进行urlencode编码,生成处理后可以进行上链的JSON数据。
步骤6.1:由于上传至区块链的数据格式必须是JSON字符串,首先对接受到的数据进行处理。将接收到的文件路径进行urlencode编码,将“:”“\”的特殊符号转为“%3A”,“%5C”,结果为:C%3A%5CUsers%5Czyz%5CDesktop%5Ctest1.zip。而后转为十六进制字符串。
步骤6.2:将接收到的文件名称转为16进制字符串。
步骤6.3:由于接收到的文件哈希值和文件ID已经为16进制字符串,所以不做处理。
步骤6.4:将文件哈希值、文件路径、文件名、文件ID拼接,生成新的数据文件唯一身份信息码。生成文件唯一身份信息码的目的是,为防止上传的文件哈希值、文件路径、文件名、文件ID中的某一个或多个数据可能会有重复的情况,因此在查询区块信息时使用不可能出现重复的文件唯一身份信息码。
步骤6.5:定义一个JSON数组,包括文件哈希值、文件路径、文件名、文件ID、数据文件唯一身份信息码。将JSON数组从节点一(提交节点)向区块链中上传。
步骤7:使用Fabric区块链平台。
步骤7.1:区块链后台向背书节点(节点一)发送交易(交易内容包括文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息码五个数据),背书节点验证交易,将经过背书节点(节点一)签名的执行结果返回给区块链后台。
步骤7.2:区块链后台向排序服务发送交易。排序服务生成新的区块。
步骤7.3:将文件哈希值、文件名、文件路径、文件ID、文件唯一身份信息码写入区块中并对区块进行加密,生成区块哈希值,并发送给主节点(节点一)。
步骤7.4:主节点(节点一)将接收到已经写入数据的区块发送到Kafka集群中,通过Kafka共识算法进行共识。
Kafka本质上是一个消息处理***,它使用的是经典的发布-订阅模型。消息的消费者订阅特定的主题,以便收到新消息的通知,生产者则负责消息的发布,Kafka***示意图如图6所示。其核心是交易排序服务以及额外的崩溃容错能力。节点一作为生产者,将包含需要上传到区块链的文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息码数据的区块发送到Kafka集群中。发送到Kafka集群的消息会属于一个topic。每个topic可以有多个生产者向它发送消息,也可以有多个消费者去消费其中的消息。本步骤中节点一是提交节点,作为topic的生产者,节点二、节点三作为消费者。
步骤7.5:在topic中设置分区,使分区均匀分布在节点上,每个消费者(节点二和节点三)至少分配一个分区。
步骤7.6:将包含文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息码数据的区块投递到为节点二和节点三分配的指定分区。
步骤7.7:节点二通过读取分区中的数据从Kafka集群拉取包含文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息数据的区块,检验完成过后进行同步和共识。
步骤7.8:节点三通过读取分区中的数据从Kafka集群拉取包含文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息码数据的区块,检验完成后进行同步和共识。
步骤7.9:各节点完成共识后,将写入了文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息数据的区块加入到区块链中。
区块一旦入链,那么存入区块的数据便不可篡改,确保了数据的安全性。传统文件存储***都直接存储整个文件。而本方法中之存储文件关键信息,既节省存储空间,又可以在文件被篡改时及时发现。区块链后台共识上链流程如图7所示。
步骤8:从区块链后台8088端口发送返回值,返回值示例如图8所示。
步骤9:搭建前端界面,提供查询文件关键数据和对应区块信息功能。
步骤9.1:利用HTML、CSS、JavaScript搭建前端页面,让用户可以根据智能合约的提供的按哈希值,按文件名,按文件ID三种查询方法查询文件数据和区块信息。
步骤9.2:在区块链后台启动端口3000,进入可视化前端,根据在前端选择的查询方式,后台调用智能合约中提供的富查询方法,通过关键词查询文件数据信息和对应区块信息。
步骤9.3:查询到结果后,经过url解码,转换时区,优化数据显示格式(将转为十六进制字符串的数据转换回原有格式)后,在前端界面显示。可视化前端查询逻辑流程如图9所示。
Claims (9)
1.一种基于区块链和国密算法的文件信息数据存储方法,其特征在于,包括以下步骤:
步骤1:搭建区块链,启动区块链***中的各个节点,保证共识功能正常;采取一个主节点,两个从节点的区块链结构;
步骤2:创建并加入通道;
步骤3:安装智能合约;
步骤4:使用Node.Js在区块链后台设置两个监听端口,分别为接收数据端口和前端开启端口;
步骤5:在JAVA发送端启动软件,点击“生成哈希值”进入文件选择界面,选择文件并确认发送;
步骤6:区块链后台监听端口8088接收端口接收到数据,将数据转为十六进制字符串,并进行urlencode编码,生成处理后可以进行上链的JSON数据;
步骤7:使用Fabric区块链平台;
步骤8:从节点一8088端口发送返回值;
步骤9:搭建前端界面,提供查询文件关键数据和对应区块信息功能。
2.根据权利要求1所述的一种基于区块链和国密算法的文件信息数据存储方法,其特征在于:
步骤1.1:开启节点一,启动证书服务和排序服务,调用证书服务CA服务,进行注册和登记,并获取身份证书;节点一作为背书节点、提交节点和主节点,负责与其他两个节点进行共识;
步骤1.2:开启节点二,启动排序服务,负责与节点一、节点三组成区块链结构,进行共识;
步骤1.3:开启节点三,启动排序服务,负责与节点一、节点三组成区块链结构,进行共识。
3.根据权利要求1所述的一种基于区块链和国密算法的文件信息数据存储方法,其特征在于:
步骤2.1:创建通道,采用通道机制使区块链中的特定节点加入通道进行交互,应用程序直接通过通道与节点进行沟通;通道相对独立的环境增加吞吐量和交易速率;
步骤2.2:分别操作三个节点加入到通道中。
4.根据权利要求1所述的一种基于区块链和国密算法的文件信息数据存储方法,其特征在于:
步骤3.1:在智能合约中设定了存储在区块链中的各项文件关键数据,设定提供给用户的按哈希值、按文件名、按文件ID三种查询方法;
步骤3.2:根据Fabric链码中投票、查询、上传功能,在智能合约脚本中实现相应的功能,采用富查询的方式为用户提供多个查询接口;完成区块链和前端可视化界面的对接;
步骤3.3:智能合约通过点到点的方式部署在区块链中,区块链中各个节点都收到一份有效合约并进行实例化,保存在对应的区块中,使得各个节点都安全有效地运用该智能合约。
5.根据权利要求1所述的一种基于区块链和国密算法的文件信息数据存储方法,其特征在于:
步骤4.1:在区块链服务器后台开启监听的端口8088,以req.params方式获取请求参数,接收数据并上链;
步骤4.2:在区块链服务器后台开启3000端口,开启前端,与前端界面进行交互。
6.根据权利要求1所述的一种基于区块链和国密算法的文件信息数据存储方法,其特征在于:
步骤5.1:选择需要存储到区块链***的文件;
步骤5.2:采用国密SM3算法生成文件哈希值;提取文件名和文件路径,生成文件ID;
步骤5.3:通过HTTP的POST请求向区块链后台接口发送数据。
7.根据权利要求1所述的一种基于区块链和国密算法的文件信息数据存储方法,其特征在于:
步骤6.1:由于上传至区块链的数据格式必须是JSON字符串,首先对接受到的数据进行处理;将接收到的文件路径进行urlencode编码,将“:”“\”的特殊符号转为“%3A”,“%5C”,结果为:
C%3A%5CUsers%5Czyz%5CDesktop%5Ctest1.zip;而后转为十六进制字符串;
步骤6.2:将接收到的文件名称转为16进制字符串;
步骤6.3:由于接收到的文件哈希值和文件ID已经为16进制字符串,所以不做处理;
步骤6.4:将文件哈希值、文件路径、文件名、文件ID拼接,生成新的数据文件唯一身份信息码;
步骤6.5:定义一个JSON数组,包括文件哈希值、文件路径、文件名、文件ID、数据文件唯一身份信息码;将JSON数组从节点一向区块链中上传。
8.根据权利要求1所述的一种基于区块链和国密算法的文件信息数据存储方法,其特征在于:
步骤7.1:区块链后台向背书节点发送交易,背书节点验证交易,将经过背书节点签名的执行结果返回给区块链后台;
步骤7.2:区块链后台向排序服务发送交易;排序服务生成新的区块;
步骤7.3:将文件哈希值、文件名、文件路径、文件ID、文件唯一身份信息码写入区块中并对区块进行加密,生成区块哈希值,并发送给主节点;
步骤7.4:主节点将接收到已经写入数据的区块发送到Kafka集群中,通过Kafka共识算法进行共识;
节点一作为生产者,将包含需要上传到区块链的文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息码数据的区块发送到Kafka集群中;发送到Kafka集群的消息会属于一个topic;每个topic有多个生产者向它发送消息,有多个消费者去消费其中的消息;节点一是提交节点,作为topic的生产者,节点二、节点三作为消费者;
步骤7.5:在topic中设置分区,使分区均匀分布在节点上,每个消费者即节点二和节点三至少分配一个分区;
步骤7.6:将包含文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息码数据的区块投递到为节点二和节点三分配的指定分区;
步骤7.7:节点二通过读取分区中的数据从Kafka集群拉取包含文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息数据的区块,检验完成过后进行同步和共识;
步骤7.8:节点三通过读取分区中的数据从Kafka集群拉取包含文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息码数据的区块,检验完成后进行同步和共识;
步骤7.9:各节点完成共识后,将写入了文件哈希值、文件路径、文件名、文件ID、文件唯一身份信息数据的区块加入到区块链中。
9.根据权利要求1所述的一种基于区块链和国密算法的文件信息数据存储方法,其特征在于:
步骤9.1:利用HTML、CSS、JavaScript搭建前端页面,让用户根据智能合约的提供的按哈希值,按文件名,按文件ID三种查询方法查询文件数据和区块信息;
步骤9.2:在区块链后台启动端口3000,进入可视化前端,根据在前端选择的查询方式,后台调用智能合约中提供的富查询方法,通过关键词查询文件数据信息和对应区块信息;
步骤9.3:查询到结果后,经过url解码,转换时区,优化数据显示格式后,在前端界面显示。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211161053.2A CN115567550B (zh) | 2022-09-22 | 2022-09-22 | 一种基于区块链和国密算法的文件信息数据存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211161053.2A CN115567550B (zh) | 2022-09-22 | 2022-09-22 | 一种基于区块链和国密算法的文件信息数据存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115567550A true CN115567550A (zh) | 2023-01-03 |
CN115567550B CN115567550B (zh) | 2024-06-21 |
Family
ID=84741578
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211161053.2A Active CN115567550B (zh) | 2022-09-22 | 2022-09-22 | 一种基于区块链和国密算法的文件信息数据存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115567550B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116502272A (zh) * | 2023-06-21 | 2023-07-28 | 北京探索者软件股份有限公司 | 计算机辅助设计cad元文件的保存方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110061838A (zh) * | 2019-04-28 | 2019-07-26 | 广州大学 | 一种dns资源记录的去中心化存储***及其实现、信息检索方法 |
CN110912937A (zh) * | 2019-12-23 | 2020-03-24 | 杭州中科先进技术研究院有限公司 | 一种基于区块链的数字存证平台和存证方法 |
EP3993318A1 (de) * | 2020-10-30 | 2022-05-04 | Bundesdruckerei GmbH | Blockchain-basiertes digitales dokumentensystem |
CN114666060A (zh) * | 2022-03-14 | 2022-06-24 | 北京工业大学 | 一种基于Hyperledger Fabric的电子数据保全方法及*** |
-
2022
- 2022-09-22 CN CN202211161053.2A patent/CN115567550B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110061838A (zh) * | 2019-04-28 | 2019-07-26 | 广州大学 | 一种dns资源记录的去中心化存储***及其实现、信息检索方法 |
CN110912937A (zh) * | 2019-12-23 | 2020-03-24 | 杭州中科先进技术研究院有限公司 | 一种基于区块链的数字存证平台和存证方法 |
EP3993318A1 (de) * | 2020-10-30 | 2022-05-04 | Bundesdruckerei GmbH | Blockchain-basiertes digitales dokumentensystem |
CN114666060A (zh) * | 2022-03-14 | 2022-06-24 | 北京工业大学 | 一种基于Hyperledger Fabric的电子数据保全方法及*** |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116502272A (zh) * | 2023-06-21 | 2023-07-28 | 北京探索者软件股份有限公司 | 计算机辅助设计cad元文件的保存方法和装置 |
CN116502272B (zh) * | 2023-06-21 | 2023-09-08 | 北京探索者软件股份有限公司 | 计算机辅助设计cad元文件的保存方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115567550B (zh) | 2024-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110400221B (zh) | 数据处理方法、***、存储介质及计算机设备 | |
CN111066047B (zh) | 实现基于区块链的工作流 | |
EP3070630B1 (en) | Data system and method | |
CN103078881B (zh) | 网络资源下载信息的分享控制***和方法 | |
KR20210095915A (ko) | 블록체인 네트워크를 통한 효율적이고 안전한 데이터 처리, 접근 및 전송을 위한 시스템 및 방법 | |
CN106961427B (zh) | 一种基于5g通信标准的密文数据搜索方法 | |
CN111108521A (zh) | 实现基于区块链的工作流 | |
US11164182B2 (en) | Methods and systems for safe creation, custody, recovery, and management of a digital asset | |
CN103051600A (zh) | 文档访问控制方法和*** | |
CN113127916A (zh) | 数据集合处理方法、数据处理方法、装置及存储介质 | |
JPH1131127A (ja) | ドキュメントデリバリシステム | |
KR100919606B1 (ko) | 분산 컴퓨팅 서비스 플랫폼 | |
CN103095663B (zh) | 一种非登录用户间的信息交互方法和装置 | |
CN115567550A (zh) | 一种基于区块链和国密算法的文件信息数据存储方法 | |
CN111915301A (zh) | 基于区块链的数据处理方法、装置、电子设备及可读介质 | |
CN115208665A (zh) | 一种基于区块链的种质资源数据安全共享方法及*** | |
CN101212301B (zh) | 一种认证设备及认证方法 | |
US20030090502A1 (en) | Method and apparatus for indicating information | |
JP2024045209A (ja) | ブロックチェーンデータ検索方法 | |
CN114078061A (zh) | 一种基于区块链的电力核心数据溯源*** | |
JP3729248B2 (ja) | データ配信装置及びデータスクランブラー | |
CN103023908B (zh) | 一种网站信息获取方法、设备及*** | |
CN117043774A (zh) | 艺术品管理方法、计算机及程序 | |
CN115145976A (zh) | 基于区块链的数据处理方法、装置、计算机设备和介质 | |
CN102298628A (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 |