CN111209591B - Storage structure sorted according to time and quick query method - Google Patents
Storage structure sorted according to time and quick query method Download PDFInfo
- Publication number
- CN111209591B CN111209591B CN201911425122.4A CN201911425122A CN111209591B CN 111209591 B CN111209591 B CN 111209591B CN 201911425122 A CN201911425122 A CN 201911425122A CN 111209591 B CN111209591 B CN 111209591B
- Authority
- CN
- China
- Prior art keywords
- data
- time
- transaction
- information
- chooseno
- 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
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
A storage structure based on Merkle tree time sorting and a quick query method are disclosed, wherein a data list of the Merkle tree is established according to input data, information of the data is quickly queried in a block chain generated by the storage structure of the merkel tree, and the data is generated according to the Merkle tree of the time for sending the data. The invention can store the transaction information or the transmitted data on the block according to the time sequence, ensures that the data has the time sequence, is convenient for searching the transaction or the transmitted data in the future, shortens the query time of the transaction or the transmitted data by using the query algorithm of the timestamp, improves the query efficiency, can uniformly store the transaction data on the block chain, and ensures that the transaction cannot be lost or falsified.
Description
Technical Field
The invention belongs to the field of computer information security, and relates to contents and methods such as data encryption, storage, information query and the like.
Background
The blockchain is a distributed database system participated by a plurality of independent nodes, and can also be called a distributed accounting mechanism. The block chain technology has the decentralization characteristic, so that the block chain can carry out valuable information transmission of point-to-point trust construction under the condition of not having a third-party trust mechanism, the transmission mode is favorable for reducing the transaction cost of the information, and the point-to-point interaction efficiency is improved, so that the application scene of the block chain is very wide. The inventor, who originally used blockchain technology, proposed in 2008 a digital encryption currency called bitcoin, which is different from the traditional currency, he did not need a banking institution like a central bank to issue, and generated a reward by continuously mining the transaction data of bitcoin by miners. This mechanism effectively ensures that transactions are conducted securely and protects the privacy of the user, with the information being less likely to be altered once the relevant data is recorded in the tiles of the blockchain.
In blockchain applications, bitcoins use the simplest binary tree Merkle tree, which was proposed by Ralph Merkle in the last century, for generating digests of digital certificate directories (see Merkle R C. protocols for public key cryptography// IEEE Symphium on Security & privacy DBLP,1980: 122-. The binary tree is used in bitcoins to hold a hash list of transactions. Bitcoin securely records transaction data onto a Merkle tree by building such a hash list, and can look up the recorded transactions one level down the list. However, when the transaction is searched for by the data, the transaction is often searched for layer by layer, and in an extreme case, the transaction needing to be searched for can be searched for by searching for the transactions on all leaves, which wastes a lot of time.
Disclosure of Invention
In order to solve the defects of the prior art, a storage structure based on the merkle tree time sorting and a quick query method are provided, the method can quickly find the transaction data and the live information data which are required by the method according to the time, the query time is saved, and the transaction efficiency is improved.
In order to achieve the purpose, the invention adopts the following technical scheme:
a storage structure sorted according to time and a method for quick query comprise the following steps:
step one, building a merkle tree data list according to input data
Step 1.1, receiving the sent data information, decrypting the private data in the data information, and verifying the private data through an elliptic curve algorithm ecdsa after decryption;
step 1.2, after the verification is successful, writing the signature of the Verifier into an information column of a data Verifier (Verifier), and writing the random number into a random number Nonce by using a random number generation algorithm;
step 1.3, encrypting the complete data by using an irreversible one-way hash algorithm SHA256 to obtain a hash value of the data, storing the data information into a levelDB database in the form of (key (HashData) and value), and storing the data information into a transaction pool in sequence;
step 1.4, receiving the next information data, repeating the steps 1.1 to 1.3,
step 1.5, after packaging is started, generating sub-node hash value information according to a Merkle tree generation algorithm of data sending time, and storing the data information into a levelDB database according to the data of key (HashData) and value;
step 1.6, repeating the step 1.1 to the step 1.5 before the completion; after the specified packing time is finished, a Merkle tree generation algorithm is used to obtain a unique Hash value RootHash of the root of the Merkle tree, the Hash value is recorded into a data column of the Merkle root of the block to be packed currently, and the block data input and generation of the block chain are finished;
version number: version number of blockchain block;
timemap: a timestamp generated by the block chain block;
previous block: storing the hash value of the previous block;
and (4) nonce: is a set of random numbers in order to increase the difficulty of modifying the block;
merkle root: storing the hash value of the Merkle root of the block;
sendtransactionitime: the maximum and minimum values of TransmitTime traded in this block and the number of trades for this block;
Step 2.1, determining the block where the inquired transaction is located according to the sending transaction time interval [ EarriestTime, LatestTime ] on each block on the block chain, wherein the minimum value of TransmitTime of the transaction of the block is EarriestTime, and the maximum value of TransmitTime of the transaction is LatestTime;
step 2.2, selecting a block, knowing that the block has SumT transactions and the time for sending the transaction to be queried, namely the TransmitTime of the transaction is QTime, and calculating a selection query number ChooseNo:
ChooseNo=[(QTime-EarliestTime)/(LatestTime-EarliestTime)*SumT]
step 2.3, inquiring the transaction information of the ChooseNo, if the information of the inquired data is the required information, outputting the specific information data, if the information is not the required information:
case 1:
if it is not
ChooseNo_Time<QTime<LatestTime
The ChooseNo _ Time is the Time for transmitting the data of the transaction information of the ChooseNo, and is calculated by first calculating SumTY ═ SumT-ChooseNo:
ChooseNo [ (QTime-ChooseNo _ Time)/(latex Time-ChooseNo _ Time) × SumTY ] + ChooseNo reenter step 3;
case 2:
if it is not
EarliestTime<QTime<ChooseNo_Time
First, count SumTY ═ ChooseNo, and ChooseNo _ Time is the Time of sending data of the transaction information of the ChooseNo item:
ChooseNo=[(QTime-EarliestTime)/(ChooseNo_Time-EarliestTime)*SumTY]
then returning to the step 3;
step 3.1, taking out a data which is used for judging whether the time for sending the data which needs to enter the Merkle tree is later than the time for sending the previous data which already enters the Merkle tree or not from the transaction pool, and if the time is later than the time for sending the previous data, carrying out the following steps; if the time is earlier than the previous time, skipping the information, returning to the step 1, extracting the transaction from the transaction pool and checking until the condition is met;
step 3.2, operating the structure of the Merkle tree;
case 1:
if the data is the first piece of data, an initial following node and a leaf node are established, and the transaction is written into the node; recording incoming time information of the earliest transaction;
then setting a node value of Sonsleft on the left side of the child node, namely Sonsleft ═ Hash, PathValue }, wherein PathValue is a path of a leaf node, Hash is a Hash value of the leaf node, and updating the next message to be transmitted with the PathValue;
case 2:
if the data number is an even number, creating a leaf node and writing the transaction into the leaf node;
setting the value SonRight on the right of the child node, namely SonRight ═ Hash, PathValue }, updating all relevant nodes on the upper layer of the node, and waiting for the next message to come in;
case 3:
if the number of the transmitted data numbers is odd, a leaf node is established first, and the transaction is written into the node; then creating child nodes from the leaf nodes to the root nodes according to a tree building principle; updating all related nodes on the upper layer of the node, and waiting for the next piece of information to be transmitted;
the tree building principle is as follows:
if this data number is satisfied
n-1<log2number<n (1)
n is a maximum of 2 not greater than numbernAn integer of
Continuously satisfy the condition
number-2n==1 (2)
Updating PathValue, then creating a new Root, wherein the attribute in the Root is the 4 values, the left child node SonLeft and the right child node SonRight are whether the Root is the Root of the following node, the stored Key PathValue and the new Root node SonLeft are the old PathValue;
the number of the sub-nodes supplemented next is n;
the number of the sub-nodes for supplementing the next m singular points behind the singular point is n-m;
if one singular point does not meet the formula 1, recalculating to obtain n meeting the condition, and restarting the principle;
step 3.3, when the generation of the Merkle tree is about to end, namely a certain amount is reached or within a certain time, recording the last transaction incoming time entering the Merkle tree; after all the nodes are updated, inputting EarriestTime and LatestTime values into a block chain;
merkle root in step 1.6: the hash value of the Merkle root of the block is stored, and the hash value is the starting key of the Merkle tree which can be retrieved from the level DB.
The invention has the beneficial effects that:
1. the invention can store the transaction information or the transmitted data on the block according to the time sequence, ensures that the data has the time sequence, and is convenient for searching the transaction or the transmitted data in the future.
2. The invention shortens the query time of the data of transaction or transmission by using the query algorithm of the timestamp, and improves the query efficiency.
3. The invention can uniformly store the transaction data on the block chain, so that the transaction cannot be lost or tampered.
Drawings
FIG. 1 constructs a complete Merkle tree.
FIG. 2 constructs an insertion example of a Merkle tree.
FIG. 3 completes the construction of the block chain block header after the Merkle tree.
Fig. 4 is an example of data queries in a block.
Detailed Description
Referring to the drawings, the invention relates to a method for performing list management and query on data during data treeing by using a block chain Merkle tree technology in a leveldb database, and a specific embodiment of the invention is specifically described in connection with patient medical data of a certain hospital.
On a certain day, the patient has three hospital diseases of the first people in a certain city. The doctor reads Zhang San to a certain outpatient service after arriving at a hospital, the doctor Liqu writes the state of illness of Zhang San on a computer after seeing the illness, the prescription medicine is prescribed, and then the doctor confirms Zhang San firstly, then scans a code with a mobile phone to sign the patient for treatment information after the week is correct.
The background establishes a merkle tree data list according to the input medical data of Zhang III of the patient
The format of the data of the patient to be treated is introduced, and the patient data is mainly divided into two parts: private data of the patient and non-private data of the patient.
Private data, the data entered has been processed in encryption before entry, the most important of the patient's private data are the following types: patient Identification Data (ID) (self identification card, name, mobile phone, home address, etc.), patient case data (Detail) (current patient condition and patient drug condition), patient data signature (Sign) (obtained after patient code scan confirmation), patient public key (quickkey) (obtained after patient code scan confirmation), patient data generation time (GenerateTime) (obtained after patient code scan confirmation), and patient time to send data (TransmitTime) (obtained after patient code scan confirmation sends information).
Patient non-private data, in the form of plain text, of the part of the data entered, wherein the data attributes are: random number (Nonce), time of completion of verification of private data (timecount), data Verifier (Verifier)
In the first step, the sent data information is received (this is a company which provides block chain service and cooperates with the hospital), the private data in the data information is decrypted, and the private data is verified through the elliptic curve algorithm ecdsa after decryption (the private data is signed by the elliptic curve algorithm ecdsa before being sent to obtain 'data signature of a patient').
And secondly, after the verification is successful, the input of the non-private data (Nonce, timenump and Verifier) of the patient is respectively finished.
Thirdly, the whole piece of data is subjected to an irreversible one-way hash algorithm SHA256 to obtain a hash value (HashData) of the piece of data. The data information is stored in a levelDB database in the form of key (HashData) and value, and finally, the data information is stored in a transaction pool in sequence.
Step four, receiving the next information data, repeating the steps from the first step to the fourth step,
fifthly, after packaging starts, the hash is generated according to a Merkle tree generation algorithm according to the time for sending data, and the data information is stored in a levelDB database in a form of key (HashData) value.
And sixthly, repeating the first step to the fifth step until the end is not reached. After the time is over, because the Merkle tree generation algorithm is used, a unique Merkle tree root hash value (RootHash) is obtained, then the hash value is recorded on the Merkle root of the block which is currently ready to be packed, and the block generation of the block chain is completed.
2) Three patients want to check the illness state of the patients several years ago after several years, but cannot find the medical record, and three patients can quickly find the case condition of the patients through the block chain server. Specifically, selecting the patient's visit time (which is already associated with the patient's TransmitTime), the system will send this message to the server. After receiving the request of the patient, the server determines the approximate position of the transaction in the block chain through time, quickly searches the specific content of the patient information according to the search algorithm in the invention content 2), and finally returns the patient information to the patient.
Claims (1)
1. A storage structure sorted according to time and a quick query method are characterized by comprising the following steps:
step one, building a merkle tree data list according to input data
Step 1.1, receiving the sent data information, decrypting the private data in the data information, and verifying the private data through an elliptic curve algorithm ecdsa after decryption;
step 1.2, after the verification is successful, writing the signature of the Verifier into an information column of a data Verifier (Verifier), and writing the random number into a random number Nonce by using a random number generation algorithm;
step 1.3, encrypting the complete data by using an irreversible one-way hash algorithm SHA256 to obtain a hash value of the data, storing the data information into a levelDB database in the form of (key (HashData) and value), and storing the data information into a transaction pool in sequence;
step 1.4, receiving the next information data, repeating the steps 1.1 to 1.3,
step 1.5, after packaging is started, generating sub-node hash value information according to a Merkle tree generation algorithm of data sending time, and storing the data information into a levelDB database according to the data of key (HashData) and value;
step 1.6, repeating the step 1.1 to the step 1.5 before the completion; after the specified packing time is finished, a Merkle tree generation algorithm is used to obtain a unique Hash value RootHash of the root of the Merkle tree, the Hash value is recorded into a data column of the Merkle root of the block to be packed currently, and the block data input and generation of the block chain are finished;
and (4) nonce: is a set of random numbers in order to increase the difficulty of modifying the block;
merkle root: storing the hash value of the Merkle root of the block;
step 2, quickly inquiring data information in the block chain generated by the merkel tree storage structure
Step 2.1, determining the block where the inquired transaction is located according to the sending transaction time interval [ EarriestTime, LatestTime ] on each block on the block chain, wherein the minimum value of TransmitTime of the transaction of the block is EarriestTime, and the maximum value of TransmitTime of the transaction is LatestTime;
step 2.2, selecting a block, knowing that the block has SumT transactions and the time for sending the transaction to be queried, namely the TransmitTime of the transaction is QTime, and calculating a selection query number ChooseNo:
ChooseNo=[(QTime-EarliestTime)/(LatestTime-EarliestTime)*SumT]
step 2.3, inquiring the transaction information of the ChooseNo, if the information of the inquired data is the required information, outputting the specific information data, if the information is not the required information:
case 1:
if it is not
ChooseNo_Time<QTime<LatestTime
The ChooseNo _ Time is the Time for transmitting the data of the transaction information of the ChooseNo, and is calculated by first calculating SumTY ═ SumT-ChooseNo:
ChooseNo [ (QTime-ChooseNo _ Time)/(latex Time-ChooseNo _ Time) × SumTY ] + ChooseNo reenter step 3;
case 2:
if it is not
EarliestTime<QTime<ChooseNo_Time
First, count SumTY ═ ChooseNo, and ChooseNo _ Time is the Time of sending data of the transaction information of the ChooseNo item:
ChooseNo=[(QTime-EarliestTime)/(ChooseNo_Time-EarliestTime)*SumTY]
then returning to the step 3;
step 3, generating an algorithm according to the Merkle tree of the time for sending the data;
step 3.1, taking out a data which is used for judging whether the time for sending the data which needs to enter the Merkle tree is later than the time for sending the previous data which already enters the Merkle tree or not from the transaction pool, and if the time is later than the time for sending the previous data, carrying out the following steps; if the time is earlier than the previous time, skipping the information, returning to the step 1, extracting the transaction from the transaction pool and checking until the condition is met;
step 3.2, operating the structure of the Merkle tree;
case 1:
if the data is the first piece of data, an initial following node and a leaf node are established, and the transaction is written into the node; recording incoming time information of the earliest transaction;
then setting a node value of Sonsleft on the left side of the child node, namely Sonsleft ═ Hash, PathValue }, wherein PathValue is a path of a leaf node, Hash is a Hash value of the leaf node, and updating the next message to be transmitted with the PathValue;
case 2:
if the data number is an even number, creating a leaf node and writing the transaction into the leaf node;
setting the value SonRight on the right of the child node, namely SonRight ═ Hash, PathValue }, updating all relevant nodes on the upper layer of the node, and waiting for the next message to come in;
case 3:
if the number of the transmitted data numbers is odd, a leaf node is established first, and the transaction is written into the node; then creating child nodes from the leaf nodes to the root nodes according to a tree building principle; updating all related nodes on the upper layer of the node, and waiting for the next piece of information to be transmitted;
the tree building principle is as follows:
if this data number is satisfied
n-1<log2number<n (1)
n is a maximum of 2 not greater than numbernAn integer of
Continuously satisfy the condition
number-2n==1 (2)
Updating PathValue, then creating a new Root, wherein the attribute in the Root is the 4 values, the left child node SonLeft and the right child node SonRight are whether the Root is the Root of the following node, the stored Key PathValue and the new Root node SonLeft are the old PathValue;
the number of the sub-nodes supplemented next is n;
the number of the sub-nodes for supplementing the next m singular points behind the singular point is n-m;
if one singular point does not meet the formula 1, recalculating to obtain n meeting the condition, and restarting the principle;
step 3.3, when the generation of the Merkle tree is about to end, namely a certain amount is reached or within a certain time, recording the last transaction incoming time entering the Merkle tree; after all the nodes are updated, inputting EarriestTime and LatestTime values into a block chain;
merkle root in step 1.6: the hash value of the Merkle root of the block is stored, and the hash value is the starting key of the Merkle tree which can be retrieved from the level DB.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911425122.4A CN111209591B (en) | 2019-12-31 | 2019-12-31 | Storage structure sorted according to time and quick query method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911425122.4A CN111209591B (en) | 2019-12-31 | 2019-12-31 | Storage structure sorted according to time and quick query method |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111209591A CN111209591A (en) | 2020-05-29 |
CN111209591B true CN111209591B (en) | 2022-03-29 |
Family
ID=70789543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911425122.4A Active CN111209591B (en) | 2019-12-31 | 2019-12-31 | Storage structure sorted according to time and quick query method |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111209591B (en) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111737763B (en) * | 2020-07-22 | 2020-12-01 | 江苏荣泽信息科技股份有限公司 | System for sorting storage data in block chain in ascending order |
CN112015734B (en) * | 2020-08-06 | 2021-05-07 | 华东师范大学 | Block chain-oriented compact Merkle multi-value proof parallel generation and verification method |
CN111930844B (en) * | 2020-08-11 | 2021-09-24 | 肖岩 | Financial prediction system based on block chain and artificial intelligence |
CN111680107B (en) * | 2020-08-11 | 2020-12-08 | 上海竞动科技有限公司 | Financial prediction system based on artificial intelligence and block chain |
CN113343292A (en) * | 2021-05-28 | 2021-09-03 | 网易(杭州)网络有限公司 | Transaction number processing method and device, storage medium and computer equipment |
CN113282662B (en) * | 2021-06-03 | 2023-11-03 | 广东辰宜信息科技有限公司 | Block information processing method, device, equipment and medium |
CN116737727B (en) * | 2023-08-15 | 2023-12-01 | 杭州卡方分布信息科技有限公司 | Stock transaction data column type storage method and server based on tree structure |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750784A (en) * | 2015-03-06 | 2015-07-01 | 西安交通大学 | Merkle tree structure-based space inquiring integrity verification method |
KR101937188B1 (en) * | 2018-02-06 | 2019-04-09 | 주식회사 코인플러그 | Method for managing information using merkle tree based on blockchain, server and terminal using the same |
CN110135186A (en) * | 2019-04-11 | 2019-08-16 | 浙江工业大学 | Medical data transaction and sharing method based on block chain technology |
-
2019
- 2019-12-31 CN CN201911425122.4A patent/CN111209591B/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750784A (en) * | 2015-03-06 | 2015-07-01 | 西安交通大学 | Merkle tree structure-based space inquiring integrity verification method |
KR101937188B1 (en) * | 2018-02-06 | 2019-04-09 | 주식회사 코인플러그 | Method for managing information using merkle tree based on blockchain, server and terminal using the same |
CN110135186A (en) * | 2019-04-11 | 2019-08-16 | 浙江工业大学 | Medical data transaction and sharing method based on block chain technology |
Non-Patent Citations (1)
Title |
---|
基于区块链网络的医疗记录安全储存访问方案;徐健等;《计算机应用》;20090531;第39卷(第5期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111209591A (en) | 2020-05-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111209591B (en) | Storage structure sorted according to time and quick query method | |
US11799660B2 (en) | Optimizations for verification of interactions system and method | |
EP3665858B1 (en) | Verification of interactions system and method | |
US10509932B2 (en) | Large data transfer using visual codes with feedback confirmation | |
EP3356988B1 (en) | Method and system for verifiable searchable symmetric encryption | |
CN110175840B (en) | Method, client, alliance chain and system for realizing light wallet mechanism in alliance chain | |
CN111914027B (en) | Block chain transaction keyword searchable encryption method and system | |
US11283616B2 (en) | Method for index-based and integrity-assured search in a blockchain | |
US8978155B2 (en) | Apparatus, methods, and computer program products providing dynamic provable data possession | |
CN108039943B (en) | Verifiable encryption searching method | |
CN111047324B (en) | Method and apparatus for updating a set of public keys at a blockchain node | |
US20160283920A1 (en) | Authentication and verification of digital data utilizing blockchain technology | |
US11468044B2 (en) | Optimizations for verification of interactions system and method using probability density functions | |
CN113924747A (en) | Blockchain transaction data field validation | |
WO2022068355A1 (en) | Encryption method and apparatus based on feature of information, device, and storage medium | |
WO2022068356A1 (en) | Blockchain-based information encryption method and apparatus, device and medium | |
CN111680013A (en) | Data sharing method based on block chain, electronic equipment and device | |
CN109918451A (en) | Data base management method and system based on block chain | |
CN116579026A (en) | Cloud data integrity auditing method, device, equipment and storage medium | |
US20220020010A1 (en) | Decentralized electronic contract attestation platform | |
Junxiang et al. | Dynamic provable data possession with batch-update verifiability | |
CN115565277B (en) | Electronic accompanying management method, device and storage medium based on blockchain | |
CN117150564B (en) | Medicine logistics data tracing method based on blockchain | |
US20230118754A1 (en) | Method and system for data retention in pruned blockchains | |
CN117972747A (en) | Block chain based searchable encryption method with forward security, storage medium and computer device |
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 |