CN112861154A - 面向数据流架构的sha算法执行方法、存储介质、电子装置 - Google Patents
面向数据流架构的sha算法执行方法、存储介质、电子装置 Download PDFInfo
- Publication number
- CN112861154A CN112861154A CN202110209198.4A CN202110209198A CN112861154A CN 112861154 A CN112861154 A CN 112861154A CN 202110209198 A CN202110209198 A CN 202110209198A CN 112861154 A CN112861154 A CN 112861154A
- Authority
- CN
- China
- Prior art keywords
- register
- bits
- data
- data flow
- 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.)
- Pending
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/602—Providing cryptographic facilities or services
-
- 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
Abstract
本发明提供一种面向数据流架构的SHA算法执行方法,对于逻辑左移操作,依次处理数据分量n1到数据分量nI。该方法包括:对于寄存器i的数据分量ni,将其与高位为j个1的K位二进制数1...1000...00进行按位与操作;将按位与操作的结果逻辑右移K-j位,得到寄存器i+1的进位值,并存入寄存器i的输出值REG_OUT中;将寄存器i的数据分量ni左移j位后加上寄存器i-1向寄存器i的进位值REG_IN,得到寄存器i的结果值;依次在寄存器1到寄存器I中分别重复执行上述步骤。
Description
技术领域
本发明涉及计算机体系结构领域,尤其涉及一种面向数据流架构的SHA算法执行方法、存储介质、电子装置。
背景技术
安全散列算法(Secure Hash Algorithm,SHA)主要用于对数据(比如一个文件)创建数字签名,以便于用户在不破坏它的安全性的前提下对它的真实性进行验证,在实现区块链当中的各个环节都有着不可替代的作用。
数据流架构是一种不同于冯诺依曼架构的计算机体系结构,由于其具有访存需求少、同步开销低等优点,在神经网络、科学计算等应用中取得较好的性能。但是其不同于传统计算机的程序执行模式,导致数据流计算机不能适应广泛的应用场景。再者,现今还未开发出广泛接受的数据流架构的软件栈,复杂的程序想移植到数据流架构计算机,需要专门的技术人员进行设计与优化。SHA算法是一种具有代表性的复杂算法。
将SHA算法移植到数据流架构计算机的难点主要有:SHA算法中的操作数位宽较多,常见的有256bit、384bit,而且在算法中存在大量的对此类“大数”的逻辑移位操作,现有计算机常通过循环将“大数”进行拆分操作完成,然而数据流架构的程序执行过程是将程序的数据流图映射到执行阵列,对于SHA算法中频繁出现的“大数”逻辑移位操作,生成每个操作的数据流图然后映射到执行阵列上,是不可行的。因此,面向数据流架构通过低位宽操作实现高位宽逻辑移位操作,是实现SHA算法的关键。
发明内容
本发明的目的在于提出一种面向数据流架构的SHA算法执行方法,能够解决上述的数据流架构中通过低位宽操作实现高位宽逻辑移位操作的问题。
设数据流架构的操作数位宽为K比特,SHA算法中的操作数位宽为N比特,其中N大于K且为K的整数倍,N比特的数据n存储在I个寄存器中,I=N/K,ni表示数据n的第i个分量,放置在寄存器i中,n1表示低位,nI表示高位。
第一方面,本发明提供一种面向数据流架构的SHA算法执行方法,对于逻辑左移操作,依次处理数据分量n1到数据分量nI。该方法包括:对于当前寄存器i的数据分量ni,将其与高位为j个1的K位二进制数1...1000...00进行按位与操作;将按位与操作的结果逻辑右移K-j位,得到高一位寄存器i+1的进位值,并存入当前寄存器i的输出值REG_OUT中;将当前寄存器i的数据分量ni左移j位后加上低一位寄存器i-1向当前寄存器i的进位值REG_IN,得到当前寄存器i的结果值;依次在低位寄存器1到高位寄存器I中重复执行上述步骤。
另外,本发明还提供一种面向数据流架构的SHA算法执行方法,对于逻辑右移操作,依次处理数据分量nI到数据分量n1。该方法包括:对于当前寄存器i的数据分量ni,将其与低位为j个1的K位二进制数00...01...1进行按位与操作;将按位与操作的结果逻辑右移左移K-j位,得到向低一位寄存器i-1的进位值,并存入当前寄存器i的输出值REG_OUT中;将当前寄存器i的数据分量ni右移j位后与高位为j个0的K位二进制数0...01...1进行与运算,再加上高一位寄存器i+1向当前寄存器i的进位值REG_IN,得到当前寄存器i的结果值;依次在高位寄存器I到低位寄存器1中重复执行上述步骤。
第二方面,本发明还提供了一种存储介质,存储介质中存储有计算机程序,计算机程序被设置为运行时执行上述的任意一种面向数据流架构的SHA算法执行方法。
第三方面,本发明还提供了一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述的任意一种面向数据流架构的SHA算法执行方法。
综上,本发明提供的面向数据流架构的SHA算法执行方法,能够实现在数据流架构中通过低位宽操作实现高位宽逻辑移位操作,从而在不对原有架构作出改变的情况下,能够使SHA算法成功运行在数据流架构上。
以下结合附图和具体实施例对本发明进行详细描述,但不作为对本发明的限定。
附图说明
图1为本发明实施例的面向数据流架构的SHA算法执行方法的流程图。
图2为本发明实施例的SHA256计算过程示意图。
图3A为本发明实施例的逻辑左移1位示意图。
图3B为本发明实施例的逻辑左移n位(n=3)示意图。
图4A为本发明实施例的逻辑右移1位示意图。
图4B为本发明实施例的逻辑右移n位(n=3)示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
如图1所示,本发明提出一种面向数据流架构的SHA算法执行方法,并且本发明的应用场景设定为:数据流架构的操作数位宽为K比特,SHA算法中的操作数位宽为N比特,其中N大于K且为K的整数倍。此处设N比特的数据存储在I个寄存器中,I=N/K,ni表示数据n的第i个分量,放置在寄存器i中,n1表示低位,nI表示高位。
本发明选取SHA256算法作为实施例,SHA是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。SHA256算法的操作数都为256比特。
由图2所示,可以看出SHA256算法的基本算子共有如下6个:
CH(x,y,z)=(x AND y)XOR((NOT x)AND z)
MAJ(x,y,z)=(x AND y)XOR(x AND z)XOR(y AND z)
BSIG0(x)=ROTR^2(x)XOR ROTR^13(x)XOR ROTR^22(x)
BSIG1(x)=ROTR^6(x)XOR ROTR^11(x)XOR ROTR^25(x)
SSIG0(x)=ROTR^7(x)XOR ROTR^18(x)XOR SHR^3(x)
SSIG1(x)=ROTR^17(x)XOR ROTR^19(x)XOR SHR^10(x)
对于CH(x,y,z)和MAJ(x,y,z)两个算子,只是按位的逻辑操作,不存在移位的问题,所以实现并未用到本发明的方法。
对于BSIG0(x)、BSIG1(x)、SSIG0(x)、SSIG1(x)4个算子,其中涉及到“大数”移位操作的是RORT^n(x)和SHR^n(x)2个运算。
ROTR(x,n)算子定义为:ROTR(x,n)=((x>>n)|(x<<(32-n)))。由定义可知ROTR算子是通过逻辑移位实现循环移位的功能。SHR(x,n)算子定义为:SHR(x,n)=(x>>n),即向右逻辑移动n位。
接下来结合具体实施例说明如何在32比特的数据流架构计算机上实现上述算法,要存储256比特的数据,需要8个寄存器,依次为寄存器1-寄存器8(REG1-REG8),即K=32、N=256、I=8。
1、逻辑左移1位
逻辑左移按照从低位到高位的顺序进行处理,即从寄存器1(REG1)到寄存器(REG8)的顺序进行。如图3A所示,首先,寄存器1(REG1)中的数据分量与只有最高位为1的32位的二进制数100…0进行按位与操作,得到的结果右移31位,就得到了向寄存器(REG2)的进位值,并保存在寄存器(REG1)的输出值REG_OUT,此时REG_OUT的值为000…01;接下来REG1的数据分量左移1位(此时有溢出位,溢出位丢弃即可),再加上寄存器1的(REG1)的进位值REG_IN即为逻辑移位之后寄存器1(REG1)的结果值,此时寄存器1(REG1)为最低位,所以其进位值REG_IN的值为0。所以寄存器1(REG1)的结果值为1111…10。接下来处理寄存器2(REG2),REG2的进位值REG_IN为REG1的输出值REG_OUT,重复上述过程,直至寄存器(REG8)。
2、逻辑左移n位(n=3)
逻辑左移按照从低位到高位的顺序进行处理,即从寄存器1(REG1)到寄存器8(REG8)的顺序进行。如图3B所示,首先,本实施例中,设n=3,寄存器(REG1)中的数据分量与高位为3个1的32位的二进制数1110…0进行按位与操作,得到的结果右移29(32-n)位,得到向寄存器2(REG2)的进位值,并保存在REG1的输出值REG_OUT,此时REG_OUT的值为000…111;接下来REG1的数据分量左移3位(此时有溢出位,溢出位丢弃即可),加上REG1的进位值REG_IN即为逻辑移位之后REG1的结果值,此时REG1为最低位,所以其进位值REG_IN为0。所以REG1的结果值为1111…000。接下来处理寄存器2(REG2),REG2的进位值REG_IN为REG1的输出值REG_OUT;重复上述过程,直至寄存器8(REG8)。
3、逻辑右移1位
逻辑右移按照从高位到低位的顺序进行处理,即从寄存器8(REG8)到寄存器(REG1)的顺序进行。如图4A所示,首先,寄存器8(REG8)中的数据分量与只有最低位为1的32位的二进制数000…1进行按位与操作,得到的结果左移31位,就得到了向寄存器7(REG7)的进位值,并保存在REG8的输出值REG_OUT,此时REG_OUT的值为000…00;接下来REG8的数据分量右移1位(此时有溢出位,溢出位丢弃即可),与只有最高位为0的32位的二进制数011…1进行与运算,再加上REG8的进位值REG_IN即为逻辑移位之后REG8的结果。此时REG8为最高位,所以其进位值REG_IN为0。所以REG8的结果值为000…00。接下来处理REG7,REG7的进位值REG_IN为REG8的输出值REG_OUT,重复上述过程,直至REG1。
4、逻辑右移n位(n=3)
逻辑右移按照从高位到低位的顺序进行处理,即从寄存器8(REG8)到寄存器1(REG1)的顺序进行。如图4B所示,首先,REG8中的数据分量与只有低位为3个1的32位的二进制数000…0111进行按位与操作,得到的结果左移29(32-n)位,得到向寄存器7(REG7)的进位值,并保存在REG8的输出值REG_OUT,此时REG_OUT的值为000…00;接下来REG8的数据分量右移3位(此时有溢出位,溢出位丢弃即可),与只有高位为3个0的32位的二进制数00011…1做与运算,加上REG8的进位值REG_IN即为逻辑移位之后REG8的结果值。此时REG8为最高位,所以其进位值REG_IN为0。所以REG8的结果值为000…00。接下来处理REG7,REG7的进位值REG_IN为REG8的输出值REG_OUT;重复上述过程,直至REG1。
本申请的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (8)
1.一种面向数据流架构的SHA算法的执行方法,所述数据流架构的操作数位宽为K比特,所述SHA算法的操作数位宽为N比特,N比特的数据存储于I个寄存器中,I=N/K,其特征在于,包括:
步骤1、对于寄存器i中的数据分量与高位为j个1的K位二进制数进行按位与操作,并得到按位与操作结果;
步骤2、将所述按位与操作结果逻辑右移K-j位,得到寄存器i的输出值,并作为寄存器i+1的进位值;
步骤3、将寄存器i中的所述数据分量左移j位后加上寄存器i的进位值得到寄存器i的结果值;
步骤4、依次在寄存器1到寄存器I中分别重复执行所述步骤1-步骤3;
其中,i=1、2、···、I,N>K,I、N及K为正整数,寄存器1表示低位,寄存器I表示高位。
2.如权利要求1所述的面向数据流架构的SHA算法的执行方法,其特征在于,当i=1时,所述寄存器的进位值为0。
3.如权利要求1所述的面向数据流架构的SHA算法的执行方法,其特征在于,所述步骤3中将寄存器i的所述数据分量左移j位后会产生j个溢出位,丢弃所述j个溢出位。
4.一种面向数据流架构的SHA算法的执行方法,所述数据流架构的操作数位宽为K比特,所述SHA算法的操作数位宽为N比特,N比特的数据存储于I个寄存器中,I=N/K,其特征在于,包括:
步骤1、对于寄存器i中的数据分量与低位为j个1的K位二进制数进行按位与操作,并得到按位与操作结果;
步骤2、将所述按位与操作结果逻辑左移K-j位,得到寄存器i的输出值,并作为寄存器i-1的进位值;
步骤3、将寄存器i中的所述数据分量右移j位后与高位为j个0的K位二进制数进行与运算,再加上寄存器i的进位值,得到寄存器i的结果值;
步骤4、依次在寄存器I到寄存器1中分别重复执行所述步骤1-步骤3;
其中,i=1、2、···、I,N>K,I、N及K为正整数,寄存器1表示低位,寄存器I表示高位。
5.如权利要求4所述的面向数据流架构的SHA算法的执行方法,其特征在于,当i=I时,所述寄存器的进位值为0。
6.如权利要求1所述的面向数据流架构的SHA算法的执行方法,其特征在于,所述步骤3中将寄存器i中的所述数据分量右移j位后会产生j个溢出位,丢弃所述j个溢出位。
7.一种存储介质,其特征在于,所述存储介质存储有计算机程序,所述计算机程序被设置为运行时执行权利要求1-6任一项中所述的方法。
8.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1-6任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110209198.4A CN112861154A (zh) | 2021-02-24 | 2021-02-24 | 面向数据流架构的sha算法执行方法、存储介质、电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110209198.4A CN112861154A (zh) | 2021-02-24 | 2021-02-24 | 面向数据流架构的sha算法执行方法、存储介质、电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112861154A true CN112861154A (zh) | 2021-05-28 |
Family
ID=75991290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110209198.4A Pending CN112861154A (zh) | 2021-02-24 | 2021-02-24 | 面向数据流架构的sha算法执行方法、存储介质、电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112861154A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783763A (zh) * | 2004-11-30 | 2006-06-07 | 中兴通讯股份有限公司 | 扰码相位偏移中伪掩码寄存器生成方法 |
CN105335331A (zh) * | 2015-12-04 | 2016-02-17 | 东南大学 | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 |
CN109032667A (zh) * | 2018-07-13 | 2018-12-18 | 中国科学院计算技术研究所 | 一种分子动力学模拟中邻接表快速建立方法和系统 |
CN110764112A (zh) * | 2019-11-14 | 2020-02-07 | 北京理工大学 | 基于改进电文编排格式提高导航定位精度和效率的方法 |
CN111600699A (zh) * | 2020-06-17 | 2020-08-28 | 深圳比特微电子科技有限公司 | 用于实现散列算法的电路和方法 |
CN111931205A (zh) * | 2020-07-24 | 2020-11-13 | 北京沃东天骏信息技术有限公司 | 一种加密着色器文件的方法和装置 |
-
2021
- 2021-02-24 CN CN202110209198.4A patent/CN112861154A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1783763A (zh) * | 2004-11-30 | 2006-06-07 | 中兴通讯股份有限公司 | 扰码相位偏移中伪掩码寄存器生成方法 |
CN105335331A (zh) * | 2015-12-04 | 2016-02-17 | 东南大学 | 一种基于大规模粗粒度可重构处理器的sha256实现方法及系统 |
CN109032667A (zh) * | 2018-07-13 | 2018-12-18 | 中国科学院计算技术研究所 | 一种分子动力学模拟中邻接表快速建立方法和系统 |
CN110764112A (zh) * | 2019-11-14 | 2020-02-07 | 北京理工大学 | 基于改进电文编排格式提高导航定位精度和效率的方法 |
CN111600699A (zh) * | 2020-06-17 | 2020-08-28 | 深圳比特微电子科技有限公司 | 用于实现散列算法的电路和方法 |
CN111931205A (zh) * | 2020-07-24 | 2020-11-13 | 北京沃东天骏信息技术有限公司 | 一种加密着色器文件的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Flores-Vergara et al. | Implementing a chaotic cryptosystem in a 64-bit embedded system by using multiple-precision arithmetic | |
US10467389B2 (en) | Secret shared random access machine | |
CN111543025A (zh) | 高精度隐私保护实值函数评估 | |
Bernstein et al. | On the correct use of the negation map in the Pollard rho method | |
US11106437B2 (en) | Lookup table optimization for programming languages that target synchronous digital circuits | |
US8411855B1 (en) | Size optimization for large elliptic curve cryptography scalar multiplication acceleration tables | |
Doulgerakis et al. | Finding closest lattice vectors using approximate Voronoi cells | |
CN115344237B (zh) | 结合Karatsuba和蒙哥马利模乘的数据处理方法 | |
Anastasova et al. | Time-Efficient Finite Field Microarchitecture Design for Curve448 and Ed448 on Cortex-M4 | |
US10944545B2 (en) | Obfuscated performance of a predetermined function | |
Dong et al. | Ec-ecc: Accelerating elliptic curve cryptography for edge computing on embedded gpu tx2 | |
CN114095149B (zh) | 信息加密方法、装置、设备及存储介质 | |
Drucker et al. | BLEACH: cleaning errors in discrete computations over CKKS | |
Arun et al. | Jolt: Snarks for virtual machines via lookups | |
De Oliveira et al. | High performance of hash-based signature schemes | |
US20100281260A1 (en) | Hash function based on polymorphic code | |
Pornin | Optimized binary gcd for modular inversion | |
CN116318660B (zh) | 一种消息扩展与压缩方法及相关装置 | |
CN112861154A (zh) | 面向数据流架构的sha算法执行方法、存储介质、电子装置 | |
CN114338049B (zh) | 基于模归约的国密算法sm2的快速实现方法及系统 | |
KR20220072760A (ko) | 암호학적 해시 함수의 원상 요소를 결정하기 위한 방법, 컴퓨터 프로그램, 및 데이터 처리 시스템 | |
Falcao et al. | Heterogeneous implementation of a voronoi cell-based svp solver | |
Seo et al. | Optimized Karatsuba squaring on 8‐bit AVR processors | |
Seo et al. | Secure number theoretic transform and speed record for Ring-LWE encryption on embedded processors | |
JP2004004784A (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 |