CN114124356B - 应用于区块链的密文生成方法、服务器、介质及装置 - Google Patents

应用于区块链的密文生成方法、服务器、介质及装置 Download PDF

Info

Publication number
CN114124356B
CN114124356B CN202111404905.1A CN202111404905A CN114124356B CN 114124356 B CN114124356 B CN 114124356B CN 202111404905 A CN202111404905 A CN 202111404905A CN 114124356 B CN114124356 B CN 114124356B
Authority
CN
China
Prior art keywords
value
parameter
final value
values
final
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
Application number
CN202111404905.1A
Other languages
English (en)
Other versions
CN114124356A (zh
Inventor
王公桃
叶雪峰
李理
孙波
张峤
吕鹏
杨超群
张梦雅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bank of China Ltd
Original Assignee
Bank of China Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bank of China Ltd filed Critical Bank of China Ltd
Priority to CN202111404905.1A priority Critical patent/CN114124356B/zh
Publication of CN114124356A publication Critical patent/CN114124356A/zh
Application granted granted Critical
Publication of CN114124356B publication Critical patent/CN114124356B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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
    • H04L9/3239Cryptographic 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 involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Power Engineering (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了应用于区块链的密文生成方法、服务器、介质及装置,可应用于区块链领域或金融领域。本申请中,会对缓冲区的标识重新进行赋值,且若输入信息被划分为多个数据块,则在下一个数据块进行计算的过程中,下一个数据块对应的缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值,为上一个数据块得到的H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值,即得到的密文不仅与对缓冲区的标识重新进行赋值的过程有关,还与输入信息被划分的数据块的数目有关,若需要暴力破解,则需要破解输入信息被划分的数据块的数目及对缓冲区的标识重新进行赋值的过程,暴力破解更困难,从而提高了输入信息的安全性。

Description

应用于区块链的密文生成方法、服务器、介质及装置
技术领域
本申请涉及区块链技术领域,更具体的说,是涉及应用于区块链的密文生成方法、服务器、介质及装置。
背景技术
SHA-1(Secure Hash Algorithm,安全散列算法1)是一种生成160位密文的函数,在现有技术中应用广泛,但是随着计算机计算能力的不断发展,已有安全人员成功的攻破SHA-1算法。
因此,如何对现有的SHA-1进行增强加固是技术发展的必然要求。
发明内容
有鉴于此,本申请提供了一种应用于区块链的密文生成方法、服务器、介质及装置。
为实现上述目的,本申请提供如下技术方案:
根据本公开实施例的第一方面,提供一种应用于区块链的密文生成方法,包括:
获取待存储至区块链的输入信息;
将所述输入信息的长度补位扩充为512位*Q,以得到第一报文,Q为大于或等于1的任意整数;
将所述第一报文划分为Q个数据块,所述数据块的位数为512位;
设置G的初始值为1;
针对第G个数据块执行以下操作:
将所述数据块划分为16个目标子数据块,所述目标子数据块的位数为32位;
针对16个所述目标子数据块进行运算,得到64个运算子数据块,以得到80个子数据块,所述运算子数据块的位数为32位,所述80个子数据块包括16个所述目标子数据块以及64个所述运算子数据块;
获得预先设置的80个常量Kt;t的取值为0、1、2、…、79;
获取缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值;
设置L的初始值为0;
针对HL执行以下操作:
将所述HL转换成十进制数值,以得到由所述十进制数值组成的第一字符串;
基于所述第一字符串获得多个坐标,所述坐标的横坐标i为所述第一字符串中的第i位置,所述坐标的纵坐标为位于所述第i位置的字符Xi
对于任一除坐标(j,Xj)以外的坐标(i,Xi)通过以下公式得到X’i
其中,rand()为随机扰动函数,r为坐标(i,Xi)与坐标(j,Xj)之间的距离,γ=1,α=0.91,β0=1.0,坐标(j,Xj)中的Xj为所述第一字符串中的最大字符;
针对所述坐标(j,Xj),通过以下公式得到X’j:X’j=Xj+αrand(Fourier());
设置Xi=Round(X’i),Xj=Round(X’j),以得到第二字符串,其中,Round()函数为将小数点后的小数进行四舍五入取整的函数;
将所述第二字符串转换成16进制数值,以得到H’L
设置HL=H’L
设置L=L+1,返回步骤针对HL执行以下操作,直至L=5;
将H0的值、H1的值、H2的值、H3的值、H4的值分别赋值给第一参数、第二参数、第三参数、第四参数和第五参数;
设置P的初始值为0;
对于t=P,执行以下计算:
TEMP=S5(H0)+ft(H1,H2,H3)+H4+Wt+Kt;H4=H3;H3=H2;H2=S30(H1);H1=H0;H0=TEMP;其中,Wt为80个子数据块中的第t+1个子数据块,ft(H1,H2,H3)是预先设置的函数;S5(H0)是指将H0左移5位;S30(H1)是指将H1左移30位;
设置P=P+1,返回步骤对于t=P,执行以下计算,直至P等于80,以得到缓冲区的标识H0的值、H1的值、H2的值、H3的值、H4的值;
基于H0的值、第一参数、H1的值、第二参数、H2的值、第三参数、H3的值、第四参数、H4的值、第五参数,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值;
将所述H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值分别作为第G+1个数据块对应的缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值;
设置G=G+1,返回步骤针对第G个数据块执行以下操作,直至G大于Q;
按照H0、H1、H2、H3、H4的顺序,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值组成的160位散列值;
基于所述160位散列值,得到密文;
将所述密文存储至区块链。
根据本公开实施例的第二方面,提供一种应用于区块链的密文生成装置,包括:
第一获取模块,用于获取待存储至区块链的输入信息;
补位扩充模块,用于将所述输入信息的长度补位扩充为512位*Q,以得到第一报文,Q为大于或等于1的任意整数;
第一划分模块,用于将所述第一报文划分为Q个数据块,所述数据块的位数为512位;
第一赋值模块,用于设置G的初始值为1;
第二划分模块,用于针对第G个数据块执行以下操作:将所述数据块划分为16个目标子数据块,所述目标子数据块的位数为32位;
第二获取模块,用于针对16个所述目标子数据块进行运算,得到64个运算子数据块,以得到80个子数据块,所述运算子数据块的位数为32位,所述80个子数据块包括16个所述目标子数据块以及64个所述运算子数据块;
第三获取模块,用于获得预先设置的80个常量Kt;t的取值为0、1、2、…、79;
第四获取模块,用于获取缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值;
第二赋值模块,用于设置L的初始值为0;
第一转换模块,用于针对HL执行以下操作:将所述HL转换成十进制数值,以得到由所述十进制数值组成的第一字符串;
第五获取模块,用于基于所述第一字符串获得多个坐标,所述坐标的横坐标i为所述第一字符串中的第i位置,所述坐标的纵坐标为位于所述第i位置的字符Xi
第六获取模块,用于对于任一除坐标(j,Xj)以外的坐标(i,Xi)通过以下公式得到X’i
其中,rand()为随机扰动函数,r为坐标(i,Xi)与坐标(j,Xj)之间的距离,γ=1,α=0.91,β0=1.0,坐标(j,Xj)中的Xj为所述第一字符串中的最大字符;
第七获取模块,用于针对所述坐标(j,Xj),通过以下公式得到X’j:X’j=Xj+αrand(Fourier());
第三赋值模块,用于设置Xi=Round(X’i),Xj=Ronnd(X’j),以得到第二字符串,其中,Round()函数为将小数点后的小数进行四舍五入取整的函数;
第二转换模块,用于将所述第二字符串转换成16进制数值,以得到H’L
第四赋值模块,用于设置HL=H’L
第五赋值模块,用于设置L=L+1,返回步骤针对HL执行以下操作,直至L=5;
第六赋值模块,用于将H0的值、H1的值、H2的值、H3的值、H4的值分别赋值给第一参数、第二参数、第三参数、第四参数和第五参数;
第七赋值模块,用于设置P的初始值为0;
计算模块,用于对于t=P,执行以下计算:
TEMP=S5(H0)+ft(H1,H2,H3)+H4+Wt+Kt;H4=H3;H3=H2;H2=S30(H1);H1=H0;H0=TEMP;其中,Wt为80个子数据块中的第t+1个子数据块,ft(H1,H2,H3)是预先设置的函数;S5(H0)是指将H0左移5位;S30(H1)是指将H1左移30位;
第八赋值模块,用于设置P=P+1,返回步骤对于t=P,执行以下计算,直至P等于80,以得到缓冲区的标识H0的值、H1的值、H2的值、H3的值、H4的值;
第八获取模块,用于基于H0的值、第一参数、H1的值、第二参数、H2的值、第三参数、H3的值、第四参数、H4的值、第五参数,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值;
第九赋值模块,用于将所述H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值分别作为第G+1个数据块对应的缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值;
第十赋值模块,用于设置G=G+1,返回步骤针对第G个数据块执行以下操作,直至G大于Q;
第九获取模块,用于按照H0、H1、H2、H3、H4的顺序,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值组成的160位散列值;
第十获取模块,用于基于所述160位散列值,得到密文;
存储模块,用于将所述密文存储至区块链。
根据本公开实施例的第三方面,提供一种服务器,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如第一方面所述的应用于区块链的密文生成方法。
根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得所述服务器能够执行如第一方面所述的应用于区块链的密文生成方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,可直接加载到计算机的内部存储器,所述存储器为第三方面所示的所述服务器包含的存储器中,并含有软件代码,所述计算机程序经由计算机载入并执行后能够实现如第一方面所述的应用于区块链的密文生成方法。
经由上述的技术方案可知,本申请提供的应用于区块链的密文生成方法,在针对输入信息获得缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值后,会对缓冲区的标识重新进行赋值,基于重新赋值后的缓冲区的标识进行加密,与,直接基于缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值进行加密相比,由于对缓冲区的标识进行了加密,所以在攻击者进行破解时,还需要破解对缓冲区的标识进行了加密过程。从而提高了安全性。且本申请中若输入信息对应的第一报文被划分为多个数据块,则在下一个数据块进行计算的过程中,下一个数据块对应的缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值,为上一个数据块得到的H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值,即得到的密文不仅与对缓冲区的标识重新进行赋值的过程有关,还与第一报文被划分的数据块的数目有关,若需要进行暴力破解,则需要尝试破解第一报文被划分的数据块的数目,以及破解对缓冲区的标识重新进行赋值的过程,相比现有技术而言,暴力破解更困难,从而提高了输入信息的安全性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的区块链装置的结构图;
图2为本申请实施例提供的区块链的结构图;
图3为本申请实施例提供的应用于区块链的密文生成方法的流程图;
图4a至图4c所示,为本申请实施例提供的输入信息补位扩充的示意图;
图5为数据块被划分为16个目标子数据块的排序示意图;
图6为本申请实施例提供的一种应用于区块链的密文生成装置的结构图;
图7是根据一示例性实施例示出的一种用于服务器的装置的框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供了一种应用于区块链的密文生成方法、装置、服务器、介质及产品,在介绍本申请实施例提供的技术方案之前,先对本申请实施例涉及的应用环境进行说明。
如图1所示,为本申请实施例提供的区块链装置的结构图。
区块链装置包括多个节点11,节点可以为电子设备或服务器。
示例性的,电子设备可以是任何一种可与用户通过键盘、触摸板、触摸屏、遥控器、语音交互或手写设备等一种或多种方式进行人机交互的电子产品,例如,手机、笔记本电脑、平板电脑、掌上电脑、个人计算机、可穿戴设备、智能电视、PAD等。
示例性的,服务器可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务器中心。服务器可以包括处理器、存储器以及网络接口等。
区块链装置包括的多个节点分别存储有一条相同的区块链。
对于多个节点中任一节点,该节点存储有区块链装置中其他节点的节点标识,以便后续根据其他节点标识,将生成的区块广播至区块链装置中的其他节点。
为了使得本领域技术人员更加理解本申请实施例,下面对区块链的结构进行详细介绍。
如图2所示,区块链由多个区块组成。创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的每一区块时,区块链所在的节点在接收到输入信息时,需要对输入信息进行SHA-1算法进行计算,将得到的160位密文作为输入信息的特征值,存储至区块头。得到区块主体和区块头后,就得到当前区块,随后,区块链所在节点根据其他节点的节点标识,将新生成的区块分别发送给其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
随着计算机计算能力的不断发展和在SHA-1算法的应用过程中不断积累的碰撞密码库,SHA-1算法生成的密文存在被暴力破解的可能。若将SHA-1算法替换成其他算法,例如,SHA-2算法,以防止其生成的密文被暴力破解,但是SHA-2算法生成的是256位密文,即与SHA-1算法生成的160位密文的长度不同,这种改进将会对接口及报文格式产生影响,提高改造成本,且难度较大。
本申请实施例提供了一种对SHA-1的改进方法,使得改进后的SHA-1算法得到的密文的长度仍为160位,从而无需改进接口及报文格式,降低了改造成本。
本申请实施例提供的应用于区块链的密文生成方法,可以应用于任何使用到SHA-1的应用场景,例如,银行的交易数据的特征值的计算场景。在不同应用场景输入信息不同,如在银行的交易数据的特征值的计算场景中,输入信息为交易数据。
下面对本申请实施例提供的应用于区块链的密文生成方法进行说明。
如图3所示,为本申请实施例提供的应用于区块链的密文生成方法的流程图,该方法包括以下步骤S301至S329。
步骤S301:获取待存储至区块链的输入信息。
示例性的,输入信息可以为交易数据。例如,转账交易数据。
步骤S302:将所述输入信息的长度补位扩充为512位*Q,以得到第一报文,Q为大于或等于1的任意整数。
本申请实施例提供的补位扩充方式有多种,本申请实施例提供但不限于以下三种。
第一种步骤S302的实现方式包括步骤A11至步骤A14。
步骤A11:在所述输入信息的末尾补位一个1。
示例性的,输入信息为二进制数据。
示例性的,若输入信息的长度为512的整数倍,则可以不需要进行补位扩充操作,若输入信息的长度不是512的整数倍,则需要进行补充扩充操作。
步骤A12:在所述输入信息补位的1后面补充0,直至补位后的第二报文的长度对512取模后余数为448。
示例性的,若输入信息的长度对512取模后余数为448则可以不执行步骤A11至步骤A12。若输入信息的长度对512取模后余数不是448,则可以执行步骤A11至步骤A12。
步骤A13:在所述第二报文的末尾补位一个1。
步骤A14:在所述第二报文的补位的1后面补充63个0,以得到所述第一报文。
为了本领域技术人员更加理解第一种步骤S302的实现方式,下面进行举例说明。
如图4a所示,为本申请实施例提供的输入信息补位扩充的示意图。
假设输入信息的长度为600位,输入信息对512取模余数为88,在输入信息后补充一个1以及359个0以后,得到第二报文。在第二报文后补充一个1以及63个0以后,以得到所述第一报文。
第二种步骤S302的实现方式包括步骤A21至步骤A23。
步骤A21:在所述输入信息的末尾补位一个1。
示例性的,输入信息为二进制数据。
示例性的,若输入信息的长度为512的整数倍,则可以不需要进行补位扩充操作,若输入信息的长度不是512的整数倍,则需要进行补充扩充操作。
步骤A22:在所述输入信息补位的1后面补充0,直至补位后的第二报文的长度对512取模后余数为448。
示例性的,若输入信息的长度对512取模后余数为448则可以不执行步骤A21至步骤A22。若输入信息的长度对512取模后余数不是448,则可以执行步骤A21至步骤A22。
步骤A23:在所述第二报文的末尾补位64个1,以得到所述第一报文。
为了本领域技术人员更加理解第二种步骤S302的实现方式,下面进行举例说明。
如图4b所示,为本申请实施例提供的输入信息补位扩充的示意图。
假设输入信息的长度为600位,输入信息对512取模余数为88,在输入信息后补充一个1以及359个0以后,得到第二报文。在第二报文后补充64个1以后,以得到所述第一报文。
第三种步骤S302的实现方式包括步骤A31至步骤A32。
步骤A31:在所述输入信息的末尾补位一个1。
示例性的,输入信息为二进制数据。
示例性的,若输入信息的长度为512的整数倍,则可以不需要进行补位扩充操作,若输入信息的长度不是512的整数倍,则需要进行补充扩充操作。
步骤A32:在所述输入信息补位的1后面补充0,直至补位后的第一报文的长度对512取模后余数为0,以得到第一报文。
为了本领域技术人员更加理解第三种步骤S302的实现方式,下面进行举例说明。
如图4c所示,为本申请实施例提供的输入信息补位扩充的示意图。
假设输入信息的长度为600位,输入信息对512取模余数为88,在输入信息后补充1个1,以及423个0得到第一报文。
步骤S303:将所述第一报文划分为Q个数据块,所述数据块的位数为512位。
以图4a至图4c为例,则Q=2。
示例性的,本申请实施例中,将第一报文划分为Q个数据块,是从第一报文的头部开始每得到512位数据,则得到一个数据块。
步骤S304:设置G的初始值为1。
步骤S305:针对第G个数据块执行以下操作:
步骤S306:将所述数据块划分为16个目标子数据块,所述目标子数据块的位数为32位。
步骤S307:针对16个所述目标子数据块进行运算,得到64个运算子数据块,以得到80个子数据块,所述运算子数据块的位数为32位,所述80个子数据块包括16个所述目标子数据块以及64个所述运算子数据块。
步骤S308:获得预先设置的80个常量Kt;t的取值为0、1、2、…、79。
在一可选实现方式中,80个常量各不相同。
在一可选实现方式中,80个常量的取值如下:
Kt=第一预设数值(0<=t<=19)
Kt=第二预设数值(20<=t<=39)
Kt=第三预设数值(40<=t<=59)
Kt=第四预设数值(60<=t<=79)。
在一可选实现方式中,不同数据块对应的80个常量可能不同,例如,可以预先设置步骤S306得到的16个目标子数据块与80个常量的对应关系。即80个常量随数据块的不同而不同。
在一可选实现方式中,不同输入信息对应的80个常量可能不同,例如,可以预先设置输入信息与80个常量的对应关系。即80个常量随输入信息的不同而不同。
在一可选实现方式中,不同数据块对应的80个常量可能相同。
在一可选实现方式中,所述第一预设数值为0x5A827999,所述第二预设数值为0x6ED9EBA1,所述第三预设数值为0x8F1BBCDC,所述第四预设数值为0xCA62C1D6。
示例性的,80个子数据块依次包括:16个所述目标子数据块以及64个所述运算子数据块。其中,16个目标子数据块的顺序为:按照划分数据块得到目标子数据块的顺序排序的。
如图5所示,为数据块被划分为16个目标子数据块的排序示意图。
从数据块的头开始,每提取32位数据得到一个目标子数据块,则可以依次得到目标子数据块1、目标子数据块2、目标子数据块3、目标子数据块4,…,目标子数据块16。上述16个目标子数据块的顺序为:目标子数据块1、目标子数据块2、目标子数据块3、目标子数据块4,…,目标子数据块16。
在一可选实现方式中,步骤S307的实现方式有多种,本申请实施例提供但不限于以下实现方式,该方法包括步骤B11至步骤B14。
步骤B11:设置R的初始值为0。
步骤B12:令t=R,执行以下操作:
步骤B13:Wt=Mt(0≤t<16),其中,Mt为第t+1个所述目标子数据块;Wt=S1(Wt- 3XOR Wt-14XOR Wt-16)(16≤t≤79);其中,S1是指向左移动1位。
步骤B14:令R=R+1,返回步骤B12,直至R等于80。
其中,上述80个子数据块依次为:W0、W1、W2、W3,…,W79
在一可选实现方式中,可以将16个目标子数据块中至少一个目标子数据块进行逻辑运算以得到64个运算子数据块。并不限定上述的异或运算XOR。
步骤S309:获取缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值。
在一可选实现方式中,针对第一个数据块,即第一次执行步骤S309时,可以从预先设置的16个子数据块与缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值的对应关系中,查找16个目标子数据块对应的缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值。
即不同的目标子数据块对应的Hi的初始值不同,由于目标子数据块与输入信息有关,从而增加了随机性和算法的抗暴力破解能力,并且算法性能消耗较小,可以在不同平台、硬件设备上移植实现,以满足金融业务系统中区块链各种使用场景的要求。
在一可选实现方式中,缓冲区{Hi}被初始化为如下值:
H0=0x67452301
H1=0xEFCDAB89
H2=0x98BADCFE
H3=0x10325476
H4=0xC3D2E1F0
步骤S310:设置L的初始值为0。
步骤S311:针对HL执行以下操作:
步骤S312:将所述HL转换成十进制数值,以得到由所述十进制数值组成的第一字符串。
步骤S313:基于所述第一字符串获得多个坐标,所述坐标的横坐标i为所述第一字符串中的第i位置,所述坐标的纵坐标为位于所述第i位置的字将Xi
假设第一字符串为{J1、J2、J3、J4、J5、J6},则可以得到6个坐标,6个坐标分别为(1,J1)、(2,J2)、(3,J3)、(4,J4)、(5,J5)、(6,J6)。
步骤S314:对于任一除坐标(j,Xj)以外的坐标(i,Xi)通过以下公式得到X’i
其中,rand()为随机扰动函数,r为坐标(i,Xi)与坐标(j,Xj)之间的距离,γ=1,α=0.91,β0=1.0,坐标(j,Xj)中的Xj为所述第一字符串中的最大字符。
α为扰动的步长因子,示例性的,α取值为[0,1]之间。
示例性的,rand()取值为[-0.5,0.5]范围内的均匀分布或者U(0,1)的标准正态分布。
示例性的,两个坐标之间的距离可以为欧式距离。
本申请实施例引入萤火虫算法,步骤S313获得的多个坐标分别为萤火虫。
步骤S315:针对所述坐标(j,Xj),通过以下公式得到X’j:X’j=Xj+αrand(F ourier())。
Fourier()为傅里叶变换函数。
步骤S316:设置Xi=Round(X’i),Xj=Round(X’j),以得到第二字符串,其中,Round()函数为将小数点后的小数进行四舍五入取整的函数。
例如,若X’i=1.6,则(X’i)=2;若X’i=1.3,则(X’i)=1。
步骤S317:将所述第二字符串转换成16进制数值,以得到H’L
步骤S318:设置HL=H’L
步骤S319:设置L=L+1,返回步骤S311,直至L=5。
步骤S320:将H0的值、H1的值、H2的值、H3的值、H4的值分别赋值给第一参数、第二参数、第三参数、第四参数和第五参数。
步骤S321:设置P的初始值为0。
步骤S322:对于t=P,执行以下计算:
TEMP=S5(H0)+ft(H1,H2,H3)+H4+Wt+Kt;H4=H3;H3=H2;H2=S30(H1);H1=H0;H0=TEMP;其中,Wt为80个子数据块中的第t+1个子数据块,ft(H1,H2,H3)是预先设置的函数;S5(H0)是指将H0左移5位;S30(H1)是指将H1左移30位。
示例性的,ft(H1,H2,H3)是预先设置的以H1,H2,H3作为自变量的函数,例如,预先设置的函数ft(H1,H2,H3)如下:
ft(H1,H2,H3)=(H1 AND H2)or((NOT H1)AND H3)(0<=t<=19)
ft(H1,H2,H3)=H1 XOR H2 XOR H3(20<=t<=39)
ft(H1,H2,H3)=(H1 AND H2)or(H1 AND H3)or(H2 AND H3)(40<=t<=59)
ft(H1,H2,H3)=H1 XOR H2 XOR H3(60<=t<=79)。
在一可选实现方式中,ft(H1,H2,H3)可以为分段函数,也可以不是分段函数,上述仅为示例,并不对ft(H1,H2,H3)造成限定。
步骤S323:设置P=P+1,返回步骤S322,直至P等于80,以得到缓冲区的标识H0的值、H1的值、H2的值、H3的值、H4的值。
步骤S324:基于H0的值、第一参数、H1的值、第二参数、H2的值、第三参数、H3的值、第四参数、H4的值、第五参数,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值。
步骤S325:将所述H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值分别作为第G+1个数据块对应的缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值。
即在第二次执行步骤S309时,得到的缓冲区的标识Hi的初始值=第一次执行步骤S324时,得到的Hi的最终值。
在第三次执行步骤S309时,得到的缓冲区的标识Hi的初始值=第二次执行步骤S324时,得到的Hi的最终值。依次类推不再赘述。
若第一报文被划分为多个数据块,则可能需要进行多次迭代,前一数据块得到的H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值,是下一数据块的H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值,所以最终得到的密文与迭代次数有关,使得密文更加难以破解。
步骤S326:设置G=G+1,返回步骤S305,直至G大于Q。
步骤S327:按照H0、H1、H2、H3、H4的顺序,将H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值组成的160位散列值。
可以理解的是,Hi的值的长度均为32位,所以5个Hi组成160位的散列值。
步骤S328:基于所述160位散列值,得到密文。
在一可选实现方式中,将160位散列值确定为密文。
步骤S329:将所述密文存储至区块链。
示例性的,可以将密文作为输入信息的特征值存储至区块链中相应区块。
本申请提供的应用于区块链的密文生成方法,在针对输入信息获得缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值后,会对缓冲区的标识重新进行赋值,基于重新赋值后的缓冲区的标识进行加密,与,直接基于缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值进行加密相比,由于对缓冲区的标识进行了加密,所以在攻击者进行破解时,还需要破解对缓冲区的标识进行了加密过程。从而提高了安全性。且本申请中若第一报文被划分为多个数据块,则在下一个数据块进行计算的过程中,下一个数据块对应的缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值,为上一个数据块得到的H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值,即得到的密文不仅与对缓冲区的标识重新进行赋值的过程有关,还与第一报文被划分的数据块的数目有关,若需要进行暴力破解,则需要尝试破解第一报文被划分的数据块的数目,以及破解对缓冲区的标识重新进行赋值的过程,相比现有技术而言,暴力破解更困难,从而提高了输入信息的安全性。
因为SHA-1算法长时间使用,使得攻击者已积累了相当数量的字典库,为进一步增强其安全性,提高抗字典攻击破解能力,以适应愈加恶化的安全形势,需要对安全散列算法1进行进一步加固处理。通过本申请实施例对安全散列算法1进行进一步加固处理后,即使输入信息的哈希值泄露后,通过目前的字典库对此改进算法也无效,无法逆向破解哈希值,进一步增强区块链业务的安全性。
在一可选实现方式中,步骤S324的实现方式有多种,本申请提供但不限于以下两种。
第一种步骤S324的实现方式包括:令H0的最终值=H0的值+第一参数、H1的最终值=H1的值+第二参数、H2的最终值=H2的值+第三参数、H3的最终值=H3的值+第四参数、H4的最终值=H4的值+第五参数。
第二种步骤S324的实现方式包括以下步骤C101至步骤C111。
步骤C101:令H0=H0的值+第一参数、H1=H1的值+第二参数、H2=H2的值+第三参数、H3=H3的值+第四参数、H4=H4的值+第五参数。
步骤C102:设置L的初始值为0。
步骤C103:针对HL执行以下操作:
步骤C104:将所述HL转换成十进制数值,以得到由所述十进制数值组成的第三字符串。
步骤C105:基于所述第三字符串获得多个坐标,所述坐标的横坐标i为所述第三字符串中的第i位置,所述坐标的纵坐标为位于所述第i位置的字将Xi
步骤C106:对于任一除坐标(j,Xj)以外的坐标(i,Xi)通过以下公式得到X’i
其中,rand()为随机扰动函数,r为坐标(i,Xi)与坐标(j,Xj)之间的距离,γ=1,α=0.91,β0=1.0,坐标(j,Xj)中的Xj为所述第三字符串中的最大字符。
步骤C107:针对所述坐标(j,Xj),通过以下公式得到X’j:X’j=Xj+αrand(Fourier())。
步骤C108:设置Xi=Round(X’i),Xj=Round(X’j),以得到第四字符串,其中,Round()函数为将小数点后的小数进行四舍五入取整的函数;
步骤C109:将所述第四字符串转换成16进制数值,以得到H’L
步骤C110:设置HL=H’L
步骤C111:设置L=L+1,返回步骤C103,直至L=5,以得到H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值。
本申请实施例对输入信息进行多次加密,如第一次加密,对缓冲区的标识重新进行赋值;第二次加密,步骤S324再次对缓冲区的标识重新进行赋值;第三次加密,若第一报文被划分为多个数据块,则在下一个数据块进行计算的过程中,下一个数据块对应的缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值,为上一个数据块得到的H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值,使得第二密文与迭代次数有关。但是最终得到的密文的长度仍为160位,并未改变。
采用本申请实施例提供的应用于区块链的密文生成方法,提高了区块链的输入信息的特征值的安全性,攻击者无法使用现在的SHA-1的字典库,逆向解密特征值,规避了暴力破解的可能。
上述本申请公开的实施例中详细描述了方法,对于本申请的方法可采用多种形式的装置实现,因此本申请还公开了一种装置,下面给出具体的实施例进行详细说明。
如图6所示,为本申请实施例提供的一种应用于区块链的密文生成装置的结构图,该装置包括:第一获取模块601、补位扩充模块602、第一划分模块603、第一赋值模块604、第二划分模块605、第二获取模块606、第三获取模块607、第四获取模块608、第二赋值模块609、第一转换模块610、第五获取模块611、第六获取模块612、第七获取模块613、第三赋值模块614、第二转换模块615、第四赋值模块616、第五赋值模块617、第六赋值模块618、第七赋值模块619、计算模块620、第八赋值模块621、第八获取模块622、第九赋值模块623、第十赋值模块624、第九获取模块625、第十获取模块626以及存储模块627,其中:
第一获取模块601,用于获取待存储至区块链的输入信息;
补位扩充模块602,用于将所述输入信息的长度补位扩充为512位*Q,以得到第一报文,Q为大于或等于1的任意整数;
第一划分模块603,用于将所述第一报文划分为Q个数据块,所述数据块的位数为512位;
第一赋值模块604,用于设置G的初始值为1;
第二划分模块605,用于针对第G个数据块执行以下操作:将所述数据块划分为16个目标子数据块,所述目标子数据块的位数为32位;
第二获取模块606,用于针对16个所述目标子数据块进行运算,得到64个运算子数据块,以得到80个子数据块,所述运算子数据块的位数为32位,所述80个子数据块包括16个所述目标子数据块以及64个所述运算子数据块;
第三获取模块607,用于获得预先设置的80个常量Kt;t的取值为0、1、2、…、79;
第四获取模块608,用于获取缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值;
第二赋值模块609,用于设置L的初始值为0;
第一转换模块610,用于针对HL执行以下操作:将所述HL转换成十进制数值,以得到由所述十进制数值组成的第一字符串;
第五获取模块611,用于基于所述第一字符串获得多个坐标,所述坐标的横坐标i为所述第一字符串中的第i位置,所述坐标的纵坐标为位于所述第i位置的字符Xi
第六获取模块612,用于对于任一除坐标(j,Xj)以外的坐标(i,Xi)通过以下公式得到X’i
其中,rand()为随机扰动函数,r为坐标(i,Xi)与坐标(j,Xj)之间的距离,γ=1,α=0.91,β0=1.0,坐标(j,Xj)中的Xj为所述第一字符串中的最大字符;
第七获取模块613,用于针对所述坐标(j,Xj),通过以下公式得到X’j:X’j=Xj+αrand(Fourier());
第三赋值模块614,用于设置Xi=Round(X;),Xj=Round(X’j),以得到第二字符串,其中,Round()函数为将小数点后的小数进行四舍五入取整的函数;
第二转换模块615,用于将所述第二字符串转换成16进制数值,以得到H’L
第四赋值模块616,用于设置HL=H’L
第五赋值模块617,用于设置L=L+1,返回所述第一转换模块,直至L=5;
第六赋值模块618,用于将H0的值、H1的值、H2的值、H3的值、H4的值分别赋值给第一参数、第二参数、第三参数、第四参数和第五参数;
第七赋值模块619,用于设置P的初始值为0;
计算模块620,用于对于t=P,执行以下计算:
TEMP=S5(H0)+ft(H1,H2,H3)+H4+Wt+Kt;H4=H3;H3=H2;H2=S30(H1);H1=H0;H0=TEMP;其中,Wt为80个子数据块中的第t+1个子数据块,ft(H1,H2,H3)是预先设置的函数;S5(H0)是指将H0左移5位;S30(H1)是指将H1左移30位;
第八赋值模块621,用于设置P=P+1,返回所述计算模块,直至P等于80,以得到缓冲区的标识H0的值、H1的值、H2的值、H3的值、H4的值;
第八获取模块622,用于基于H0的值、第一参数、H1的值、第二参数、H2的值、第三参数、H3的值、第四参数、H4的值、第五参数,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值;
第九赋值模块623,用于将所述H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值分别作为第G+1个数据块对应的缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值;
第十赋值模块624,用于设置G=G+1,返回所述第二划分模块,直至G大于Q;
第九获取模块625,用于按照H0、H1、H2、H3、H4的顺序,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值组成的160位散列值;
第十获取模块626,用于基于所述160位散列值,得到密文;
存储模块627,用于将所述密文存储至区块链。
在一可选实现方式中,所述第八获取模块包括:
第一赋值单元,用于令H0的最终值=H0的值+第一参数、H1的最终值=H1的值+第二参数、H2的最终值=H2的值+第三参数、H3的最终值=H3的值+第四参数、H4的最终值=H4的值+第五参数
在一可选实现方式中,所述第八获取模块包括:
第二赋值单元,用于令H0=H0的值+第一参数、H1=H1的值+第二参数、H2=H2的值+第三参数、H3=H3的值+第四参数、H4=H4的值+第五参数;
第三赋值单元,用于设置L的初始值为0;
第一转换单元,用于针对HL执行以下操作:将所述HL转换成十进制数值,以得到由所述十进制数值组成的第三字符串;
第一获取单元,用于基于所述第三字符串获得多个坐标,所述坐标的横坐标i为所述第三字符串中的第i位置,所述坐标的纵坐标为位于所述第i位置的字符Xi
第二获取单元,用于对于任一除坐标(j,Xj)以外的坐标(i,Xi)通过以下公式得到X’i
其中,rand()为随机扰动函数,r为坐标(i,Xi)与坐标(j,Xj)之间的距离,γ=1,α=0.91,β0=1.0,坐标(j,Xj)中的Xj为所述第三字符串中的最大字符;
第三获取单元,用于针对所述坐标(j,Xj),通过以下公式得到X’j:X’j=Xj+αrand(Fourier());
第四获取单元,用于设置Xi=Round(X’i),Xj=Round(X’j),以得到第四字符串;
第二转换单元,用于将所述第四字符串转换成16进制数值,以得到H’L
第四赋值单元,用于设置HL=H’L
第五赋值单元,用于设置L=L+1,返回第一转换单元,直至L=5,以得到H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值。
在一选实现方式中,所述补位扩充模块包括:
第一补位单元,用于在所述输入信息的末尾补位一个1;
第二补位单元,用于在所述输入信息补位的1后面补充0,直至补位后的第二报文的长度对512取模后余数为448;
第三补位单元,用于在所述第二报文的末尾补位一个1;
第四补位单元,用于在所述第二报文的补位的1后面补充63个0,以得到所述第一报文。
在一可选实现方式中,所述第一预设数值为0x5A827999,所述第二预设数值为0x6ED9EBA1,所述第三预设数值为0x8F1BBCDC,所述第四预设数值为0xCA62C1D6。
在一可选实现方式中,预先设置的函数ft(H1,H2,H3)如下:
ft(H1,H2,H3)=(H1 AND H2)or((NOT H1)AND H3)(0<=t<=19)
ft(H1,H2,H3)=H1XOR H2 XOR H3(20<=t<=39)
ft(H1,H2,H3)=(H1 AND H2)or(H1 AND H3)or(H2AND H3)(40<=t<=59)
ft(H1,H2,H3)=H1 XOR H2 XOR H3(60<=t<=79)。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图7是根据一示例性实施例示出的一种用于服务器的装置的框图。
服务器包括但不限于:处理器71、存储器72、网络接口73、I/O控制器74以及通信总线75。
需要说明的是,本领域技术人员可以理解,图7中示出的服务器的结构并不构成对服务器的限定,服务器可以包括比图7所示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图7对服务器的各个构成部件进行具体的介绍:
处理器71是服务器的控制中心,利用各种接口和线路连接整个服务器的各个部分,通过运行或执行存储在存储器72内的软件程序和/或模块,以及调用存储在存储器72内的数据,执行服务器的各种功能和处理数据,从而对服务器进行整体监控。处理器71可包括一个或多个处理单元;示例性的,处理器71可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器71中。
处理器71可能是一个中央处理器(Central Processing Unit,CPU),或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路等;
存储器72可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM)721和只读存储器(Read-Only Memory,ROM)722,也可能还包括大容量存储设备723,例如至少1个磁盘存储器等。当然,该服务器还可能包括其他业务所需要的硬件。
其中,上述的存储器72,用于存储上述处理器71可执行指令。上述处理器71具有应用于区块链的密文生成方法的功能。
一个有线或无线网络接口73被配置为将服务器连接到网络。
处理器71、存储器72、网络接口73和I/O控制器74可以通过通信总线75相互连接,该通信总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(Peripheral Component Interconnect,外设部件互连标准)总线或EISA(ExtendedIndustry Standard Architecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。
在示例性实施例中,服务器可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述应用于区块链的密文生成方法。
在示例性实施例中,本公开实施例提供了一种包括指令的存储介质,例如包括指令的存储器72,上述指令可由服务器的处理器71执行以完成上述方法。可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光应用于区块链的密文生成设备等。
在示例性实施例中,还提供了一种计算机可读存储介质,可直接加载到计算机的内部存储器,例如上述存储器72中,并含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述应用于区块链的密文生成方法任一实施例所示步骤。
在示例性实施例中,还提供一种计算机程序产品,可直接加载到计算机的内部存储器,例如所述服务器包含的存储器中,并含有软件代码,该计算机程序经由计算机载入并执行后能够实现上述所述应用于区块链的密文生成方法任一实施例所示步骤。
需要说明的是,本发明提供的应用于区块链的密文生成方法、服务器、介质及装置可用于区块链领域或金融领域。上述仅为示例,并不对本发明提供的应用于区块链的密文生成方法、服务器、介质及装置的应用领域进行限定。
需要说明的是,本说明书中的各个实施例中记载的特征可以相互替换或者组合。对于装置或系统类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (9)

1.一种应用于区块链的密文生成方法,其特征在于,包括:
获取待存储至区块链的输入信息;
将所述输入信息的长度补位扩充为512位*Q,以得到第一报文,Q为大于或等于1的任意整数;
将所述第一报文划分为Q个数据块,所述数据块的位数为512位;
设置G的初始值为1;
针对第G个数据块执行以下操作:
将所述数据块划分为16个目标子数据块,所述目标子数据块的位数为32位;
针对16个所述目标子数据块进行运算,得到64个运算子数据块,以得到80个子数据块,所述运算子数据块的位数为32位,所述80个子数据块包括16个所述目标子数据块以及64个所述运算子数据块;
获得预先设置的80个常量Kt;t的取值为0、1、2、…、79;
获取缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值;
设置L的初始值为0;
针对HL执行以下操作:
将所述HL转换成十进制数值,以得到由所述十进制数值组成的第一字符串;
基于所述第一字符串获得多个坐标,所述坐标的横坐标i为所述第一字符串中的第i位置,所述坐标的纵坐标为位于所述第i位置的字符Xi,i的取值为1、2、…、第一字符串包括的字符的个数;
对于任一除坐标(j,Xj)以外的坐标(i,Xi)通过以下公式得到X’i
其中,rand()为随机扰动函数,r为坐标(i,Xi)与坐标(j,Xj)之间的距离,γ=1,α=0.91,β0=1.0,坐标(j,Xj)中的Xj为所述第一字符串中的最大字符;
针对所述坐标(j,Xj),通过以下公式得到X’j:X’j=Xj+α×rand(Fourier()),Fourier()为傅里叶变换函数;
设置Xi=Round(X’i),Xj=Round(X’j),以得到第二字符串,其中,Round()函数为将小数点后的小数进行四舍五入取整的函数;
将所述第二字符串转换成16进制数值,以得到H’L
设置HL=H’L
设置L=L+1,返回步骤针对HL执行以下操作,直至L=4;
将H0的值、H1的值、H2的值、H3的值、H4的值分别赋值给第一参数、第二参数、第三参数、第四参数和第五参数;
设置P的初始值为0;
对于t=P,执行以下计算:
TEMP=S5(H0)+ft(H1,H2,H3)+H4+Wt+Kt;H4=H3;H3=H2;H2=S30(H1);H1
H0;H0=TEMP;其中,Wt为80个子数据块中的第t+1个子数据块,ft(H1,H2,H3)是预先设置的函数;S5(H0)是指将H0左移5位;S30(H1)是指将H1左移30位;ft(H1,H2,H3)是预先设置的以H1,H2,H3作为自变量的分段函数;
设置P=P+1,返回步骤对于t=P,执行以下计算,直至P等于79,以得到缓冲区的标识H0的值、H1的值、H2的值、H3的值、H4的值;
基于H0的值、第一参数、H1的值、第二参数、H2的值、第三参数、H3的值、第四参数、H4的值、第五参数,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值;
将所述H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值分别作为第G+1个数据块对应的缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值;
设置G=G+1,返回步骤针对第G个数据块执行以下操作,直至G大于Q;
按照H0、H1、H2、H3、H4的顺序,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值组成的160位散列值;
基于所述160位散列值,得到密文;
将所述密文存储至区块链。
2.根据权利要求1所述应用于区块链的密文生成方法,其特征在于,所述基于H0的值、第一参数、H1的值、第二参数、H2的值、第三参数、H3的值、第四参数、H4的值、第五参数,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值步骤包括:
令H0的最终值=H0的值+第一参数、H1的最终值=H1的值+第二参数、H2的最终值=H2的值+第三参数、H3的最终值=H3的值+第四参数、H4的最终值=H4的值+第五参数。
3.根据权利要求1所述应用于区块链的密文生成方法,其特征在于,所述基于H0的值、第一参数、H1的值、第二参数、H2的值、第三参数、H3的值、第四参数、H4的值、第五参数,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值步骤包括:
令H0=H0的值+第一参数、H1=H1的值+第二参数、H2=H2的值+第三参数、H3=H3的值+第四参数、H4=H4的值+第五参数;
设置L的初始值为0;
针对HL执行以下操作:
将所述HL转换成十进制数值,以得到由所述十进制数值组成的第三字符串;
基于所述第三字符串获得多个坐标,所述坐标的横坐标i为所述第三字符串中的第i位置,所述坐标的纵坐标为位于所述第i位置的字符Xi,i的取值为1、2、…、第三字符串包括的字符的个数;
对于任一除坐标(j,Xj)以外的坐标(i,Xi)通过以下公式得到X'i
其中,rand()为随机扰动函数,r为坐标(i,Xi)与坐标(j,Xj)之间的距离,γ=1,α=0.91,β0=1.0,坐标(j,Xj)中的Xj为所述第三字符串中的最大字符;
针对所述坐标(j,Xj),通过以下公式得到X’j:X’j=Xj+α×rand(Fourier());
设置Xi=Round(X’i),Xj=Round(X’j),以得到第四字符串;
将所述第四字符串转换成16进制数值,以得到H’L
设置HL=H’L
设置L=L+1,返回步骤针对HL执行以下操作,直至L=4,以得到H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值。
4.根据权利要求1所述应用于区块链的密文生成方法,其特征在于,所述将所述输入信息的长度补位扩充为512位*Q,以得到第一报文步骤包括:
在所述输入信息的末尾补位一个1;
在所述输入信息补位的1后面补充0,直至补位后的第二报文的长度对512取模后余数为448;
在所述第二报文的末尾补位一个1;
在所述第二报文的补位的1后面补充63个0,以得到所述第一报文。
5.根据权利要求1至4任一所述应用于区块链的密文生成方法,其特征在于,所述针对16个目标子数据块进行运算,以得到64个运算子数据块步骤包括:
设置R的初始值为0;
令t=R,执行以下操作:
Wt=Mt,0≤t<16,其中,Mt为第t+1个所述目标子数据块;
Wt=S1(Wt-3 XOR Wt-14 XOR Wt-16),16≤t≤79;其中,S1是指向左移动1位;其中,XOR为异或运算;
令R=R+1,返回步骤令t=R,执行以下操作,直至R等于79。
6.根据权利要求1至4任一所述应用于区块链的密文生成方法,其特征在于,预先设置的函数ft(H1,H2,H3)如下:
ft(H1,H2,H3)=(H1 AND H2)or((NOT H1)AND H3),0<=t<=19;
ft(H1,H2,H3)=H1 XOR H2 XOR H3,20<=t<=39;
ft(H1,H2,H3)=(H1 AND H2)or(H1 AND H3)or(H2 AND H3),40<=t<=59);
ft(H1,H2,H3)=H1 XOR H2 XOR H3,60<=t<=79;
其中,AND为与运算,or为或运算,NOT为取反运算,XOR为异或运算。
7.一种应用于区块链的密文生成装置,其特征在于,包括:
第一获取模块,用于获取待存储至区块链的输入信息;
补位扩充模块,用于将所述输入信息的长度补位扩充为512位*Q,以得到第一报文,Q为大于或等于1的任意整数;
第一划分模块,用于将所述第一报文划分为Q个数据块,所述数据块的位数为512位;
第一赋值模块,用于设置G的初始值为1;
第二划分模块,用于针对第G个数据块执行以下操作:将所述数据块划分为16个目标子数据块,所述目标子数据块的位数为32位;
第二获取模块,用于针对16个所述目标子数据块进行运算,得到64个运算子数据块,以得到80个子数据块,所述运算子数据块的位数为32位,所述80个子数据块包括16个所述目标子数据块以及64个所述运算子数据块;
第三获取模块,用于获得预先设置的80个常量Kt;t的取值为0、1、2、…、79;
第四获取模块,用于获取缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值;
第二赋值模块,用于设置L的初始值为0;
第一转换模块,用于针对HL执行以下操作:将所述HL转换成十进制数值,以得到由所述十进制数值组成的第一字符串;
第五获取模块,用于基于所述第一字符串获得多个坐标,所述坐标的横坐标i为所述第一字符串中的第i位置,所述坐标的纵坐标为位于所述第i位置的字符Xi,i的取值为1、2、…、第一字符串包括的字符的个数;
第六获取模块,用于对于任一除坐标(j,Xj)以外的坐标(i,Xi)通过以下公式得到X’i
其中,rand()为随机扰动函数,r为坐标(i,Xi)与坐标(j,Xj)之间的距离,γ=1,α=0.91,β0=1.0,坐标(j,Xj)中的Xj为所述第一字符串中的最大字符;
第七获取模块,用于针对所述坐标(j,Xj),通过以下公式得到X’j:X’j=Xj+α×rand(Fourier()),Fourier()为傅里叶变换函数;
第三赋值模块,用于设置Xi=Round(X’i),Xj=Round(X’j),以得到第二字符串,其中,Round()函数为将小数点后的小数进行四舍五入取整的函数;
第二转换模块,用于将所述第二字符串转换成16进制数值,以得到H’L
第四赋值模块,用于设置HL=H’L
第五赋值模块,用于设置L=L+1,返回所述第一转换模块,直至L=4;
第六赋值模块,用于将H0的值、H1的值、H2的值、H3的值、H4的值分别赋值给第一参数、第二参数、第三参数、第四参数和第五参数;
第七赋值模块,用于设置P的初始值为0;
计算模块,用于对于t=P,执行以下计算:
TEMP=S5(H0)+ft(H1,H2,H3)+H4+Wt+Kt;H4=H3;H3=H2;H2=S30(H1);H1
H0;H0=TEMP;其中,Wt为80个子数据块中的第t+1个子数据块,ft(H1,H2,H3)是预先设置的函数;S5(H0)是指将H0左移5位;S30(H1)是指将H1左移30位;ft(H1,H2,H3)是预先设置的以H1,H2,H3作为自变量的分段函数;
第八赋值模块,用于设置P=P+1,返回所述计算模块,直至P等于79,以得到缓冲区的标识H0的值、H1的值、H2的值、H3的值、H4的值;
第八获取模块,用于基于H0的值、第一参数、H1的值、第二参数、H2的值、第三参数、H3的值、第四参数、H4的值、第五参数,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值;
第九赋值模块,用于将所述H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值分别作为第G+1个数据块对应的缓冲区的标识H0的初始值、H1的初始值、H2的初始值、H3的初始值、H4的初始值;
第十赋值模块,用于设置G=G+1,返回所述第二划分模块,直至G大于Q;
第九获取模块,用于按照H0、H1、H2、H3、H4的顺序,获得H0的最终值、H1的最终值、H2的最终值、H3的最终值、H4的最终值组成的160位散列值;
第十获取模块,用于基于所述160位散列值,得到密文;
存储模块,用于将所述密文存储至区块链。
8.一种服务器,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至6任一所述的应用于区块链的密文生成方法。
9.一种计算机可读存储介质,当所述存储介质中的指令由服务器的处理器执行时,使得所述服务器能够执行如权利要求1至6中任一项所述的应用于区块链的密文生成方法。
CN202111404905.1A 2021-11-24 2021-11-24 应用于区块链的密文生成方法、服务器、介质及装置 Active CN114124356B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111404905.1A CN114124356B (zh) 2021-11-24 2021-11-24 应用于区块链的密文生成方法、服务器、介质及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111404905.1A CN114124356B (zh) 2021-11-24 2021-11-24 应用于区块链的密文生成方法、服务器、介质及装置

Publications (2)

Publication Number Publication Date
CN114124356A CN114124356A (zh) 2022-03-01
CN114124356B true CN114124356B (zh) 2024-01-26

Family

ID=80372179

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111404905.1A Active CN114124356B (zh) 2021-11-24 2021-11-24 应用于区块链的密文生成方法、服务器、介质及装置

Country Status (1)

Country Link
CN (1) CN114124356B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10340048A (ja) * 1997-06-06 1998-12-22 Hitachi Ltd ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置
CN110516462A (zh) * 2019-08-30 2019-11-29 京东数字科技控股有限公司 用于加密数据的方法和装置
CN110851843A (zh) * 2019-10-08 2020-02-28 立旃(上海)科技有限公司 基于区块链的数据管理方法及装置
CN112134689A (zh) * 2020-09-28 2020-12-25 中国银行股份有限公司 一种密文的生成方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10340048A (ja) * 1997-06-06 1998-12-22 Hitachi Ltd ハッシュ値生成方法、データ暗号化方法、データ復号化方法、ハッシュ値生成装置、データ暗号化装置およびデータ復号化装置
CN110516462A (zh) * 2019-08-30 2019-11-29 京东数字科技控股有限公司 用于加密数据的方法和装置
CN110851843A (zh) * 2019-10-08 2020-02-28 立旃(上海)科技有限公司 基于区块链的数据管理方法及装置
CN112134689A (zh) * 2020-09-28 2020-12-25 中国银行股份有限公司 一种密文的生成方法及装置

Also Published As

Publication number Publication date
CN114124356A (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
CN111461952B (zh) 图像加密方法、计算机设备和计算机可读存储介质
CN109791517B (zh) 保护并行乘法运算免受外部监测攻击
CN107819569B (zh) 登录信息的加密方法及终端设备
US20100098255A1 (en) System and method for a derivation function for key per page
CN107612683B (zh) 一种加解密方法、装置、系统、设备和存储介质
CN109658078A (zh) 基于生物特征的区块链私钥生成方法、装置及介质
JP2008293034A (ja) タイミング攻撃を阻止する標準化されたモジュラべき乗を計算することにより復号メカニズムを実行する方法と装置
CN113098675B (zh) 基于多项式完全同态的二进制数据加密系统及方法
CN113067816A (zh) 数据加密方法及装置
US7809130B1 (en) Password recovery system and method
CN110659505A (zh) 用于对机密数据和附加认证数据进行加密或解密的加速器
CN114124356B (zh) 应用于区块链的密文生成方法、服务器、介质及装置
CN114374505A (zh) 密文生成方法、装置、服务器、介质及产品
CN110601817B (zh) 一种数据处理方法及装置
CN114124357B (zh) 基于傅里叶级数的密文生成方法、服务器、介质及装置
CN108307211B (zh) 一种视频流地址鉴权方法、存储介质、设备及系统
CN114091117B (zh) 数据存储方法、服务器、介质及装置
CN113722746B (zh) 电缆施工图纸的混沌加密方法及系统
CN114091070B (zh) 基于希尔伯特变换的密文生成方法、服务器、介质及装置
CN109150494B (zh) 移动端中构造加解密算法的方法、存储介质、设备及系统
Huang et al. Security analysis of image encryption based on twodimensional chaotic maps and improved algorithm
CN114221753B (zh) 密钥数据处理方法和电子设备
CN114826560A (zh) 一种轻量级分组密码cref实现方法及系统
CN114124358B (zh) 密文生成方法、装置、服务器及介质
CN114205104A (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