CN104657288B - 一种spi flash加密接口及加密数据的读写方法 - Google Patents
一种spi flash加密接口及加密数据的读写方法 Download PDFInfo
- Publication number
- CN104657288B CN104657288B CN201510094016.8A CN201510094016A CN104657288B CN 104657288 B CN104657288 B CN 104657288B CN 201510094016 A CN201510094016 A CN 201510094016A CN 104657288 B CN104657288 B CN 104657288B
- Authority
- CN
- China
- Prior art keywords
- data
- addr
- dec
- enc
- module
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 14
- 238000006243 chemical reaction Methods 0.000 claims abstract description 34
- 241001269238 Data Species 0.000 claims description 6
- 238000000151 deposition Methods 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 235000013399 edible fruits Nutrition 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- MLLUMKXNINTJAC-UHFFFAOYSA-N 1,3-dioxoisoindole-4-sulfonic acid Chemical compound OS(=O)(=O)C1=CC=CC2=C1C(=O)NC2=O MLLUMKXNINTJAC-UHFFFAOYSA-N 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及一种SPI FLASH加密接口,包括命令模块、数据模块、加密模块、解密模块、状态机模块以及协议转换模块,命令模块与系统总线相连;数据模块与系统总线、命令模块、加密模块以及解密模块相连;加密模块与数据模块、命令模块以及状态机模块相连;解密模块与数据模块、状态机模块相连;状态机模块与命令模块、加密模块、解密模块以及协议转换模块相连;协议转换模块与状态机模块、SPI FLASH相连。将传统的按字加密方式改成按字节采用不同算法分别加密的方式,取消了字节间的加解密依赖关系,使得软件对SPI FLASH的操作大为简化,在保证系统保密安全的基础上有效降低了软件操作的复杂度,提升了整个系统的效率。
Description
技术领域
本发明属于电子芯片技术领域,涉及一种电子芯片的加密设备及方法,尤其是一种针对SPI FLASH的加密接口及读写方法;采用该加密接口及读写方法,能够实现对SPIFLASH的按字节读写,以及按字节加密,提高了系统访问SPI FLASH的效率。
背景技术
在一个加密主控芯片系统中,通常需要将启动程序部分的数据置于跟主控芯片一体封装的SPI NORFLASH中,以提高系统的安全系数。上述启动程序的数据在写入SPI FLASH之前必然需要对其进行加密处理,所以当读出上述数据后必然要进行反向的解密操作才能得到真实的数据。
现有技术中的加密算法,是针对整个字进行的加密运算,使得加密后的数据与其存储地址以及同一字内的位于不同字节的位有相关性。虽然SPI FLASH的接口标准支持按字节写的命令,但是采用上述按字加密的方式使得同一字内的不同字节之间产生依赖关系,丧失了按字节写的灵活性。
此外,由于FLASH的操作特性是先擦后写,而且擦除单位通常为一个扇区,如果只能按字写入的话,软件在要写入一个字节之前首先要判断该字节所在的字的所有字节是否有数据,如果没有数据可以直接写该字,如果任何一个字节有数据,都需要先将该字所在的扇区读出到缓存,将需要写的相应字节位置替换成新字节,然后进行擦除操作,然后再按照需要将整个扇区重新写入FLASH。该种方式不仅降低系统效率而且对软件有极高的要求,使得对SPI FLASH按字节写入加密数据的操作成本提高。此为现有技术的不足之处。
因此,提供设计一种新型的针对SPI FLASH的加密接口及读写方法,以提高系统访问SPI FLASH的效率是非常有必要的。
发明内容
本发明的目的在于,针对上述现有技术中存在的缺陷,提供设计一种针对SPIFLASH的加密接口及读写方法,以解决上述技术问题,在保持算法复杂度的同时,减少软件工作量,并提高系统访问SPI FLASH的效率。
为实现上述目的,本发明给出以下技术方案:
一种SPI FLASH加密接口,包括命令模块、数据模块、加密模块、解密模块、状态机模块以及协议转换模块;其特征在于:
所述命令模块与系统总线相连,用于寄存来自系统总线的地址、读写信息、数据块大小及传输类型,并将系统总线的读写需求传递至数据模块和状态机模块,将状态机模块的当前操作状态反馈至系统总线;
所述数据模块与系统总线、命令模块、加密模块以及解密模块相连,数据模块用于寄存系统总线要写入SPI FLASH的字节数据以及从SPI FLASH中读取的字节数据;
所述加密模块与数据模块、命令模块以及状态机模块相连,用于将写入SPI FLASH的字节数据按照特定的加密算法转换成密文;
所述解密模块与数据模块、状态机模块相连,用于将从FLASH内读出的字节数据按照特定的解密算法转换成明文;
所述状态机模块与命令模块、加密模块、解密模块以及协议转换模块相连,用于解析来自命令模块的数据,以实现对SPI FLASH读写擦状态的转换控制,并反馈FLASH的状态信息至命令模块;
所述协议转换模块与状态机模块、SPI FLASH相连,实现SPI协议转换,即将命令和数据按照SPI协议组成相应的串行命令序列格式转送至片外的SPI FLASH,或者将从SPIFLASH串行读入的数据寄存重新组成字节或者字的数据格式。
优选地,所述数据模块内设置有读数据缓存单元和写数据缓存单元。
一种SPI FLASH加密数据的写入方法,包括如下步骤:
S1:系统总线将写命令发送至命令模块,将字节写数据发送至数据模块;
S2:命令模块接收到写命令后,判断写命令中的地址是否在数据模块的写数据缓存单元中命中,如果命中,则将缓存数据更新,并转到S7,否则转到S3;
S3:命令模块将写命令传递至状态机模块,状态机模块对写命令进行状态转换;
S4:通过加密模块对数据模块中的字节写数据进行加密处理;
S5:将写命令以及经加密模块加密处理后的字节写数据依次传递至协议转换模块;
S6:协议转换模块按顺序将命令序列输出至SPI FLASH内;
S7:完成本次写操作。
优选地,所述步骤S4中包括如下步骤:
S401:对字节0的加密算法,如下:
wr_data_enc[0] = wr_data[0] ^ wr_data[2] ^ wr_addr[2];
wr_data_enc[1] = wr_data[1] ^ wr_data[3] ^ wr_addr[3];
wr_data_enc[2] = wr_data[2] ^ wr_data[5] ^ wr_addr[4];
wr_data_enc[3] = wr_data[3] ^ wr_data[6] ^ wr_addr[5];
wr_data_enc[4] = wr_data[4] ^ wr_data[7] ^ wr_addr[6];
wr_data_enc[5] =~wr_data[5] ^ wr_addr[7];
wr_data_enc[6] = wr_data[6] ^ wr_data[0] ^ wr_addr[8];
wr_data_enc[7] = wr_data[7] ^ wr_data[1] ^ wr_addr[9];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址。
优选地,所述步骤S4还包括如下步骤:
S402:对字节1的加密算法,如下:
wr_data_enc[8] = wr_data[ 8] ^ wr_data[8+6] ^ wr_addr[9];
wr_data_enc[9] = wr_data[ 9] ^ wr_data[8+7] ^ wr_addr[8];
wr_data_enc[10] = wr_data[10] ^ wr_data[8+0] ^ wr_addr[7];
wr_data_enc[11] =~wr_data[11] ^ wr_addr[6];
wr_data_enc[12] = wr_data[12] ^ wr_data[8+1] ^ wr_addr[5];
wr_data_enc[13] = wr_data[13] ^ wr_data[8+3] ^ wr_addr[4];
wr_data_enc[14] = wr_data[14] ^ wr_data[8+4] ^ wr_addr[3];
wr_data_enc[15] = wr_data[15] ^ wr_data[8+5] ^ wr_addr[2];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址。
优选地,所述步骤S4还包括如下步骤:
S403:对字节2的加密算法,如下:
wr_data_enc[16] = wr_data[16] ^ wr_data[16+3] ^ wr_addr[2];
wr_data_enc[17] = wr_data[17] ^ wr_data[16+4] ^ wr_addr[4];
wr_data_enc[18] = wr_data[18] ^ wr_data[16+6] ^ wr_addr[3];
wr_data_enc[19] = wr_data[19] ^ wr_data[16+7] ^ wr_addr[9];
wr_data_enc[20] = wr_data[20] ^ wr_data[16+0] ^ wr_addr[7];
wr_data_enc[21] = wr_data[21] ^ wr_data[16+1] ^ wr_addr[8];
wr_data_enc[22] =~wr_data[22] ^ wr_addr[5];
wr_data_enc[23] = wr_data[23] ^ wr_data[16+2] ^ wr_addr[6];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址。
优选地,所述步骤S4还包括如下步骤:
S404:对字节3的加密算法,如下:
wr_data_enc[24] = wr_data[24] ^ wr_data[24+5] ^ wr_addr[5];
wr_data_enc[25] = wr_data[25] ^ wr_data[24+7] ^ wr_addr[9];
wr_data_enc[26] = wr_data[26] ^ wr_data[24+6] ^ wr_addr[7];
wr_data_enc[27] = wr_data[27] ^ wr_data[24+1] ^ wr_addr[2];
wr_data_enc[28] = wr_data[28] ^ wr_data[24+2] ^ wr_addr[3];
wr_data_enc[29] = wr_data[29] ^ wr_data[24+3] ^ wr_addr[8];
wr_data_enc[30] =~wr_data[30] ^ wr_addr[6];
wr_data_enc[31] = wr_data[31] ^ wr_data[24+4] ^ wr_addr[4];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址。
一种SPI FLASH加密数据的读取方法,包括如下步骤:
S1:系统总线发送读命令至命令模块,并等待数据模块反馈读数据;
S2:命令模块判断读命令中的地址是否在数据模块的读数据缓存单元中命中,如果命中,则直接将字节数据反馈给总线,并转到步骤S10,否则转到步骤S3;
S3:向系统总线反馈等待信号;
S4:将读命令传递至状态机模块,通过状态机模块进行状态转换,将读命令解析后传递至协议转换模块;
S5:协议转换模块按照顺序将读命令序列输出至SPI FLASH;
S6:SPI FLASH接到读命令序列后,将字节数据序列发送至协议转换模块;
S7:协议转换模块将字节数据序列转成芯片内部的数据格式并反馈至状态机模块;
S8:状态机模块进行状态转换后将该字节数据传递至解密模块;
S9:解密模块通过解密算法对字节数据进行解密,然后将解密后的字节数据经数据模块反馈至系统总线;
S10:完成本次读操作。
优选地,所述步骤S9中包括如下步骤:
S901:对字节0的解密算法:
rd_data_dec[0] = rd_data[0] ^ rd_data_dec[2] ^ rd_addr[2];
rd_data_dec[1] = rd_data[1] ^ rd_data_dec[3] ^ rd_addr[3];
rd_data_dec[2] = rd_data[2] ^ rd_data_dec[5] ^ rd_addr[4];
rd_data_dec[3] = rd_data[3] ^ rd_data_dec[6] ^ rd_addr[5];
rd_data_dec[4] = rd_data[4] ^ rd_data_dec[7] ^ rd_addr[6];
rd_data_dec[5] =~rd_data[5] ^ rd_addr[7];
rd_data_dec[6] = rd_data[6] ^ rd_data_dec[0] ^ rd_addr[8];
rd_data_dec[7] = rd_data[7] ^ rd_data_dec[1] ^ rd_addr[9];
S902:对字节1的解密算法:
rd_data_dec[8] = rd_data[8] ^ rd_data_dec[8+6] ^ rd_addr[9];
rd_data_dec[9] = rd_data[9] ^ rd_data_dec[8+7] ^ rd_addr[8];
rd_data_dec[10] = rd_data[10] ^ rd_data_dec[8+0] ^ rd_addr[7];
rd_data_dec[11] =~rd_data[11] ^ rd_addr[6];
rd_data_dec[12] = rd_data[12] ^ rd_data_dec[8+1] ^ rd_addr[5];
rd_data_dec[13] = rd_data[13] ^ rd_data_dec[8+3] ^ rd_addr[4];
rd_data_dec[14] = rd_data[14] ^ rd_data_dec[8+4] ^ rd_addr[3];
rd_data_dec[15] = rd_data[15] ^ rd_data_dec[8+5] ^ rd_addr[2];
S903:对字节2的解密算法:
rd_data_dec[16] = rd_data[16] ^ rd_data_dec[16+3] ^ rd_addr[2];
rd_data_dec[17] = rd_data[17] ^ rd_data_dec[16+4] ^ rd_addr[4];
rd_data_dec[18] = rd_data[18] ^ rd_data_dec[16+6] ^ rd_addr[3];
rd_data_dec[19] = rd_data[19] ^ rd_data_dec[16+7] ^ rd_addr[9];
rd_data_dec[20] = rd_data[20] ^ rd_data_dec[16+0] ^ rd_addr[7];
rd_data_dec[21] = rd_data[21] ^ rd_data_dec[16+1] ^ rd_addr[8];
rd_data_dec[22] =~rd_data[22] ^ rd_addr[5];
rd_data_dec[23] = rd_data[23] ^ rd_data_dec[16+2] ^ rd_addr[6];
S904:对字节3的解密算法:
rd_data_dec[24] = rd_data[24] ^ rd_data_dec[24+5] ^ rd_addr[5];
rd_data_dec[25] = rd_data[25] ^ rd_data_dec[24+7] ^ rd_addr[9];
rd_data_dec[26] = rd_data[26] ^ rd_data_dec[24+6] ^ rd_addr[7];
rd_data_dec[27] = rd_data[27] ^ rd_data_dec[24+1] ^ rd_addr[2];
rd_data_dec[28] = rd_data[28] ^ rd_data_dec[24+2] ^ rd_addr[3];
rd_data_dec[29] = rd_data[29] ^ rd_data_dec[24+3] ^ rd_addr[8];
rd_data_dec[30] =~rd_data[30] ^ rd_addr[6];
rd_data_dec[31] = rd_data[31] ^ rd_data_dec[24+4] ^ rd_addr[4];
其中,rd_data表示解密前的数据,rd_data_dec表示解密后的数据,rd_addr表示读数据在FLASH中的地址。
本发明的有益效果在于,将传统的按字加密方式改成按字节采用不同算法分别加密的方式,取消了字节间的加解密依赖关系,使得软件对SPI FLASH的操作大为简化;本发明的硬件开销与传统方式相比不相上下,因为加密算法使用的异或门个数相对于上百至千万门的大规模集成电路而言所占面积比重微乎其微;加密算法采用二至三级异或对时序的影响不大,在UMC0.11工艺下至少可以保证时钟频率达到200M;本发明在保证系统保密安全的基础上有效降低了软件操作的复杂度,提升了整个系统的效率。此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著地进步,其实施的有益效果也是显而易见的。
附图说明
图1为本发明提供的一种SPI FLASH加密接口的结构示意图。
其中,1-系统总线,2-SPI FLASH加密接口,3-SPI FLASH,21-命令模块,22-数据模块,23-加密模块,24-解密模块,25-状态机模块,26-协议转换模块。
具体实施方式
下面结合附图并通过具体实施例对本发明进行详细阐述,以下实施例是对本发明的解释,而本发明并不局限于以下实施方式。
如图1所示,本发明提供的一种SPI FLASH加密接口,包括命令模块21、数据模块22、加密模块23、解密模块24、状态机模块25以及协议转换模块26;
所述命令模块21与系统总线1相连,用于寄存来自系统总线1的地址、读写信息、数据块大小及传输类型,并将系统总线1的读写需求传递至数据模块22和状态机模块25,将状态机模块25的当前操作状态反馈至系统总线1;
所述数据模块22与系统总线1、命令模块21、加密模块23以及解密模块24相连,数据模块22用于寄存系统总线1要写入SPI FLASH3的字节数据以及从SPI FLASH3中读取的字节数据;
所述加密模块23与数据模块22、命令模块21以及状态机模块25相连,用于将写入SPI FLASH3的字节数据按照特定的加密算法转换成密文;
所述解密模块24与数据模块22、状态机模块25相连,用于将从SPI FLASH3内读出的字节数据按照特定的解密算法转换成明文;
所述状态机模块25与命令模块21、加密模块23、解密模块24以及协议转换模块26相连,用于解析来自命令模块21的数据,以实现对SPI FLASH3读写擦状态的转换控制,并反馈SPI FLASH3的状态信息至命令模块;
所述协议转换模块26与状态机模块25、SPI FLASH3相连,实现SPI协议转换,即将命令和数据按照SPI协议组成相应的串行命令序列格式转送至片外的SPI FLASH3,或者将从SPI FLASH3串行读入的数据寄存重新组成字节或者字的数据格式。
本实施例中,所述数据模块22内设置有读数据缓存单元和写数据缓存单元。
本实施例中还提供了一种SPI FLASH加密数据的写入方法,包括如下步骤:
S1:系统总线将写命令发送至命令模块,将字节写数据发送至数据模块;
S2:命令模块接收到写命令后,判断写命令中的地址是否在数据模块的写数据缓存单元中命中,如果命中,则将缓存数据更新,并转到S7,否则转到S3;
S3:命令模块将写命令传递至状态机模块,状态机模块对写命令进行状态转换;
S4:通过加密模块对数据模块中的字节写数据进行加密处理;
S5:将写命令以及经加密模块加密处理后的字节写数据依次传递至协议转换模块;
S6:协议转换模块按顺序将命令序列输出至SPI FLASH内;
S7:完成本次写操作。
本实施例中,所述步骤S4中包括如下步骤:
S401:对字节0的加密算法,如下:
wr_data_enc[0] = wr_data[0] ^ wr_data[2] ^ wr_addr[2];
wr_data_enc[1] = wr_data[1] ^ wr_data[3] ^ wr_addr[3];
wr_data_enc[2] = wr_data[2] ^ wr_data[5] ^ wr_addr[4];
wr_data_enc[3] = wr_data[3] ^ wr_data[6] ^ wr_addr[5];
wr_data_enc[4] = wr_data[4] ^ wr_data[7] ^ wr_addr[6];
wr_data_enc[5] =~wr_data[5] ^ wr_addr[7];
wr_data_enc[6] = wr_data[6] ^ wr_data[0] ^ wr_addr[8];
wr_data_enc[7] = wr_data[7] ^ wr_data[1] ^ wr_addr[9];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址。
本实施例中,所述步骤S4还包括如下步骤:
S402:对字节1的加密算法,如下:
wr_data_enc[8] = wr_data[ 8] ^ wr_data[8+6] ^ wr_addr[9];
wr_data_enc[9] = wr_data[ 9] ^ wr_data[8+7] ^ wr_addr[8];
wr_data_enc[10] = wr_data[10] ^ wr_data[8+0] ^ wr_addr[7];
wr_data_enc[11] =~wr_data[11] ^ wr_addr[6];
wr_data_enc[12] = wr_data[12] ^ wr_data[8+1] ^ wr_addr[5];
wr_data_enc[13] = wr_data[13] ^ wr_data[8+3] ^ wr_addr[4];
wr_data_enc[14] = wr_data[14] ^ wr_data[8+4] ^ wr_addr[3];
wr_data_enc[15] = wr_data[15] ^ wr_data[8+5] ^ wr_addr[2];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址。
本实施例中,所述步骤S4还包括如下步骤:
S403:对字节2的加密算法,如下:
wr_data_enc[16] = wr_data[16] ^ wr_data[16+3] ^ wr_addr[2];
wr_data_enc[17] = wr_data[17] ^ wr_data[16+4] ^ wr_addr[4];
wr_data_enc[18] = wr_data[18] ^ wr_data[16+6] ^ wr_addr[3];
wr_data_enc[19] = wr_data[19] ^ wr_data[16+7] ^ wr_addr[9];
wr_data_enc[20] = wr_data[20] ^ wr_data[16+0] ^ wr_addr[7];
wr_data_enc[21] = wr_data[21] ^ wr_data[16+1] ^ wr_addr[8];
wr_data_enc[22] =~wr_data[22] ^ wr_addr[5];
wr_data_enc[23] = wr_data[23] ^ wr_data[16+2] ^ wr_addr[6];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址。
本实施例中,所述步骤S4还包括如下步骤:
S404:对字节3的加密算法,如下:
wr_data_enc[24] = wr_data[24] ^ wr_data[24+5] ^ wr_addr[5];
wr_data_enc[25] = wr_data[25] ^ wr_data[24+7] ^ wr_addr[9];
wr_data_enc[26] = wr_data[26] ^ wr_data[24+6] ^ wr_addr[7];
wr_data_enc[27] = wr_data[27] ^ wr_data[24+1] ^ wr_addr[2];
wr_data_enc[28] = wr_data[28] ^ wr_data[24+2] ^ wr_addr[3];
wr_data_enc[29] = wr_data[29] ^ wr_data[24+3] ^ wr_addr[8];
wr_data_enc[30] =~wr_data[30] ^ wr_addr[6];
wr_data_enc[31] = wr_data[31] ^ wr_data[24+4] ^ wr_addr[4];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址。
本实施例还提供了一种SPI FLASH加密数据的读取方法,包括如下步骤:
S1:系统总线发送读命令至命令模块,并等待数据模块反馈读数据;
S2:命令模块判断读命令中的地址是否在数据模块的读数据缓存单元中命中,如果命中,则直接将字节数据反馈给总线,并转到步骤S10,否则转到步骤S3;
S3:向系统总线反馈等待信号;
S4:将读命令传递至状态机模块,通过状态机模块进行状态转换,将读命令解析后传递至协议转换模块;
S5:协议转换模块按照顺序将读命令序列输出至SPI FLASH;
S6:SPI FLASH接到读命令序列后,将字节数据序列发送至协议转换模块;
S7:协议转换模块将字节数据序列转成芯片内部的数据格式并反馈至状态机模块;
S8:状态机模块进行状态转换后将该字节数据传递至解密模块;
S9:解密模块通过解密算法对字节数据进行解密,然后将解密后的字节数据经数据模块反馈至系统总线;
S10:完成本次读操作。
本实施例中,所述步骤S9中包括如下步骤:
S901:对字节0的解密算法:
rd_data_dec[0] = rd_data[0] ^ rd_data_dec[2] ^ rd_addr[2];
rd_data_dec[1] = rd_data[1] ^ rd_data_dec[3] ^ rd_addr[3];
rd_data_dec[2] = rd_data[2] ^ rd_data_dec[5] ^ rd_addr[4];
rd_data_dec[3] = rd_data[3] ^ rd_data_dec[6] ^ rd_addr[5];
rd_data_dec[4] = rd_data[4] ^ rd_data_dec[7] ^ rd_addr[6];
rd_data_dec[5] =~rd_data[5] ^ rd_addr[7];
rd_data_dec[6] = rd_data[6] ^ rd_data_dec[0] ^ rd_addr[8];
rd_data_dec[7] = rd_data[7] ^ rd_data_dec[1] ^ rd_addr[9];
S902:对字节1的解密算法:
rd_data_dec[8] = rd_data[8] ^ rd_data_dec[8+6] ^ rd_addr[9];
rd_data_dec[9] = rd_data[9] ^ rd_data_dec[8+7] ^ rd_addr[8];
rd_data_dec[10] = rd_data[10] ^ rd_data_dec[8+0] ^ rd_addr[7];
rd_data_dec[11] =~rd_data[11] ^ rd_addr[6];
rd_data_dec[12] = rd_data[12] ^ rd_data_dec[8+1] ^ rd_addr[5];
rd_data_dec[13] = rd_data[13] ^ rd_data_dec[8+3] ^ rd_addr[4];
rd_data_dec[14] = rd_data[14] ^ rd_data_dec[8+4] ^ rd_addr[3];
rd_data_dec[15] = rd_data[15] ^ rd_data_dec[8+5] ^ rd_addr[2];
S903:对字节2的解密算法:
rd_data_dec[16] = rd_data[16] ^ rd_data_dec[16+3] ^ rd_addr[2];
rd_data_dec[17] = rd_data[17] ^ rd_data_dec[16+4] ^ rd_addr[4];
rd_data_dec[18] = rd_data[18] ^ rd_data_dec[16+6] ^ rd_addr[3];
rd_data_dec[19] = rd_data[19] ^ rd_data_dec[16+7] ^ rd_addr[9];
rd_data_dec[20] = rd_data[20] ^ rd_data_dec[16+0] ^ rd_addr[7];
rd_data_dec[21] = rd_data[21] ^ rd_data_dec[16+1] ^ rd_addr[8];
rd_data_dec[22] =~rd_data[22] ^ rd_addr[5];
rd_data_dec[23] = rd_data[23] ^ rd_data_dec[16+2] ^ rd_addr[6];
S904:对字节3的解密算法:
rd_data_dec[24] = rd_data[24] ^ rd_data_dec[24+5] ^ rd_addr[5];
rd_data_dec[25] = rd_data[25] ^ rd_data_dec[24+7] ^ rd_addr[9];
rd_data_dec[26] = rd_data[26] ^ rd_data_dec[24+6] ^ rd_addr[7];
rd_data_dec[27] = rd_data[27] ^ rd_data_dec[24+1] ^ rd_addr[2];
rd_data_dec[28] = rd_data[28] ^ rd_data_dec[24+2] ^ rd_addr[3];
rd_data_dec[29] = rd_data[29] ^ rd_data_dec[24+3] ^ rd_addr[8];
rd_data_dec[30] =~rd_data[30] ^ rd_addr[6];
rd_data_dec[31] = rd_data[31] ^ rd_data_dec[24+4] ^ rd_addr[4];
其中,rd_data表示解密前的数据,rd_data_dec表示解密后的数据,rd_addr表示读数据在FLASH中的地址。
以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。
Claims (4)
1.一种SPI FLASH加密接口,包括命令模块、数据模块、加密模块、解密模块、状态机模块以及协议转换模块;其特征在于:
所述命令模块与系统总线相连,用于寄存来自系统总线的地址、读写信息、数据块大小及传输类型,并将系统总线的读写需求传递至数据模块和状态机模块,将状态机模块的当前操作状态反馈至系统总线;
所述数据模块与系统总线、命令模块、加密模块以及解密模块相连,数据模块用于寄存系统总线要写入SPI FLASH的字节数据以及从SPI FLASH中读取的字节数据;
所述加密模块与数据模块、命令模块以及状态机模块相连,用于将写入SPI FLASH的字节数据按照特定的加密算法转换成密文;
所述解密模块与数据模块、状态机模块相连,用于将从FLASH内读出的字节数据按照特定的解密算法转换成明文;
所述状态机模块与命令模块、加密模块、解密模块以及协议转换模块相连,用于解析来自命令模块的数据,以实现对SPI FLASH读写擦状态的转换控制,并反馈FLASH的状态信息至命令模块;
所述协议转换模块与状态机模块、SPI FLASH相连,实现SPI协议转换,即将命令和数据按照SPI协议组成相应的串行命令序列格式转送至片外的SPI FLASH,或者将从SPI FLASH串行读入的数据寄存重新组成字节或者字的数据格式;
所述特定的加密算法包括以下具体算法:
对字节0的加密算法,如下:
wr_data_enc[0] = wr_data[0] ^ wr_data[2] ^ wr_addr[2];
wr_data_enc[1] = wr_data[1] ^ wr_data[3] ^ wr_addr[3];
wr_data_enc[2] = wr_data[2] ^ wr_data[5] ^ wr_addr[4];
wr_data_enc[3] = wr_data[3] ^ wr_data[6] ^ wr_addr[5];
wr_data_enc[4] = wr_data[4] ^ wr_data[7] ^ wr_addr[6];
wr_data_enc[5] =~wr_data[5] ^ wr_addr[7];
wr_data_enc[6] = wr_data[6] ^ wr_data[0] ^ wr_addr[8];
wr_data_enc[7] = wr_data[7] ^ wr_data[1] ^ wr_addr[9];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址;
对字节1的加密算法,如下:
wr_data_enc[8] = wr_data[ 8] ^ wr_data[8+6] ^ wr_addr[9];
wr_data_enc[9] = wr_data[ 9] ^ wr_data[8+7] ^ wr_addr[8];
wr_data_enc[10] = wr_data[10] ^ wr_data[8+0] ^ wr_addr[7];
wr_data_enc[11] =~wr_data[11] ^ wr_addr[6];
wr_data_enc[12] = wr_data[12] ^ wr_data[8+1] ^ wr_addr[5];
wr_data_enc[13] = wr_data[13] ^ wr_data[8+3] ^ wr_addr[4];
wr_data_enc[14] = wr_data[14] ^ wr_data[8+4] ^ wr_addr[3];
wr_data_enc[15] = wr_data[15] ^ wr_data[8+5] ^ wr_addr[2];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址;
对字节2的加密算法,如下:
wr_data_enc[16] = wr_data[16] ^ wr_data[16+3] ^ wr_addr[2];
wr_data_enc[17] = wr_data[17] ^ wr_data[16+4] ^ wr_addr[4];
wr_data_enc[18] = wr_data[18] ^ wr_data[16+6] ^ wr_addr[3];
wr_data_enc[19] = wr_data[19] ^ wr_data[16+7] ^ wr_addr[9];
wr_data_enc[20] = wr_data[20] ^ wr_data[16+0] ^ wr_addr[7];
wr_data_enc[21] = wr_data[21] ^ wr_data[16+1] ^ wr_addr[8];
wr_data_enc[22] =~wr_data[22] ^ wr_addr[5];
wr_data_enc[23] = wr_data[23] ^ wr_data[16+2] ^ wr_addr[6];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址;
对字节3的加密算法,如下:
wr_data_enc[24] = wr_data[24] ^ wr_data[24+5] ^ wr_addr[5];
wr_data_enc[25] = wr_data[25] ^ wr_data[24+7] ^ wr_addr[9];
wr_data_enc[26] = wr_data[26] ^ wr_data[24+6] ^ wr_addr[7];
wr_data_enc[27] = wr_data[27] ^ wr_data[24+1] ^ wr_addr[2];
wr_data_enc[28] = wr_data[28] ^ wr_data[24+2] ^ wr_addr[3];
wr_data_enc[29] = wr_data[29] ^ wr_data[24+3] ^ wr_addr[8];
wr_data_enc[30] =~wr_data[30] ^ wr_addr[6];
wr_data_enc[31] = wr_data[31] ^ wr_data[24+4] ^ wr_addr[4];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址;
所述特定的解密算法包括以下具体算法:
对字节0的解密算法:
rd_data_dec[0] = rd_data[0] ^ rd_data_dec[2] ^ rd_addr[2];
rd_data_dec[1] = rd_data[1] ^ rd_data_dec[3] ^ rd_addr[3];
rd_data_dec[2] = rd_data[2] ^ rd_data_dec[5] ^ rd_addr[4];
rd_data_dec[3] = rd_data[3] ^ rd_data_dec[6] ^ rd_addr[5];
rd_data_dec[4] = rd_data[4] ^ rd_data_dec[7] ^ rd_addr[6];
rd_data_dec[5] =~rd_data[5] ^ rd_addr[7];
rd_data_dec[6] = rd_data[6] ^ rd_data_dec[0] ^ rd_addr[8];
rd_data_dec[7] = rd_data[7] ^ rd_data_dec[1] ^ rd_addr[9];
对字节1的解密算法:
rd_data_dec[8] = rd_data[8] ^ rd_data_dec[8+6] ^ rd_addr[9];
rd_data_dec[9] = rd_data[9] ^ rd_data_dec[8+7] ^ rd_addr[8];
rd_data_dec[10] = rd_data[10] ^ rd_data_dec[8+0] ^ rd_addr[7];
rd_data_dec[11] =~rd_data[11] ^ rd_addr[6];
rd_data_dec[12] = rd_data[12] ^ rd_data_dec[8+1] ^ rd_addr[5];
rd_data_dec[13] = rd_data[13] ^ rd_data_dec[8+3] ^ rd_addr[4];
rd_data_dec[14] = rd_data[14] ^ rd_data_dec[8+4] ^ rd_addr[3];
rd_data_dec[15] = rd_data[15] ^ rd_data_dec[8+5] ^ rd_addr[2];
对字节2的解密算法:
rd_data_dec[16] = rd_data[16] ^ rd_data_dec[16+3] ^ rd_addr[2];
rd_data_dec[17] = rd_data[17] ^ rd_data_dec[16+4] ^ rd_addr[4];
rd_data_dec[18] = rd_data[18] ^ rd_data_dec[16+6] ^ rd_addr[3];
rd_data_dec[19] = rd_data[19] ^ rd_data_dec[16+7] ^ rd_addr[9];
rd_data_dec[20] = rd_data[20] ^ rd_data_dec[16+0] ^ rd_addr[7];
rd_data_dec[21] = rd_data[21] ^ rd_data_dec[16+1] ^ rd_addr[8];
rd_data_dec[22] =~rd_data[22] ^ rd_addr[5];
rd_data_dec[23] = rd_data[23] ^ rd_data_dec[16+2] ^ rd_addr[6];
对字节3的解密算法:
rd_data_dec[24] = rd_data[24] ^ rd_data_dec[24+5] ^ rd_addr[5];
rd_data_dec[25] = rd_data[25] ^ rd_data_dec[24+7] ^ rd_addr[9];
rd_data_dec[26] = rd_data[26] ^ rd_data_dec[24+6] ^ rd_addr[7];
rd_data_dec[27] = rd_data[27] ^ rd_data_dec[24+1] ^ rd_addr[2];
rd_data_dec[28] = rd_data[28] ^ rd_data_dec[24+2] ^ rd_addr[3];
rd_data_dec[29] = rd_data[29] ^ rd_data_dec[24+3] ^ rd_addr[8];
rd_data_dec[30] =~rd_data[30] ^ rd_addr[6];
rd_data_dec[31] = rd_data[31] ^ rd_data_dec[24+4] ^ rd_addr[4];
其中,rd_data表示解密前的数据,rd_data_dec表示解密后的数据,rd_addr表示读数据在FLASH中的地址。
2.根据权利要求1所述的一种SPI FLASH加密接口,其特征在于:所述数据模块内设置有读数据缓存单元和写数据缓存单元。
3.一种SPI FLASH加密数据的写入方法,包括如下步骤:
S1:系统总线将写命令发送至命令模块,将字节写数据发送至数据模块;
S2:命令模块接收到写命令后,判断写命令中的地址是否在数据模块的写数据缓存单元中命中,如果命中,则将缓存数据更新,并转到S7,否则转到S3;
S3:命令模块将写命令传递至状态机模块,状态机模块对写命令进行状态转换;
S4:通过加密模块对数据模块中的字节写数据进行加密处理;
S5:将写命令以及经加密模块加密处理后的字节写数据依次传递至协议转换模块;
S6:协议转换模块按顺序将命令序列输出至SPI FLASH内;
S7:完成本次写操作;
所述步骤S4中包括如下步骤:
S401:对字节0的加密算法,如下:
wr_data_enc[0] = wr_data[0] ^ wr_data[2] ^ wr_addr[2];
wr_data_enc[1] = wr_data[1] ^ wr_data[3] ^ wr_addr[3];
wr_data_enc[2] = wr_data[2] ^ wr_data[5] ^ wr_addr[4];
wr_data_enc[3] = wr_data[3] ^ wr_data[6] ^ wr_addr[5];
wr_data_enc[4] = wr_data[4] ^ wr_data[7] ^ wr_addr[6];
wr_data_enc[5] =~wr_data[5] ^ wr_addr[7];
wr_data_enc[6] = wr_data[6] ^ wr_data[0] ^ wr_addr[8];
wr_data_enc[7] = wr_data[7] ^ wr_data[1] ^ wr_addr[9];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址;
S402:对字节1的加密算法,如下:
wr_data_enc[8] = wr_data[ 8] ^ wr_data[8+6] ^ wr_addr[9];
wr_data_enc[9] = wr_data[ 9] ^ wr_data[8+7] ^ wr_addr[8];
wr_data_enc[10] = wr_data[10] ^ wr_data[8+0] ^ wr_addr[7];
wr_data_enc[11] =~wr_data[11] ^ wr_addr[6];
wr_data_enc[12] = wr_data[12] ^ wr_data[8+1] ^ wr_addr[5];
wr_data_enc[13] = wr_data[13] ^ wr_data[8+3] ^ wr_addr[4];
wr_data_enc[14] = wr_data[14] ^ wr_data[8+4] ^ wr_addr[3];
wr_data_enc[15] = wr_data[15] ^ wr_data[8+5] ^ wr_addr[2];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址;
S403:对字节2的加密算法,如下:
wr_data_enc[16] = wr_data[16] ^ wr_data[16+3] ^ wr_addr[2];
wr_data_enc[17] = wr_data[17] ^ wr_data[16+4] ^ wr_addr[4];
wr_data_enc[18] = wr_data[18] ^ wr_data[16+6] ^ wr_addr[3];
wr_data_enc[19] = wr_data[19] ^ wr_data[16+7] ^ wr_addr[9];
wr_data_enc[20] = wr_data[20] ^ wr_data[16+0] ^ wr_addr[7];
wr_data_enc[21] = wr_data[21] ^ wr_data[16+1] ^ wr_addr[8];
wr_data_enc[22] =~wr_data[22] ^ wr_addr[5];
wr_data_enc[23] = wr_data[23] ^ wr_data[16+2] ^ wr_addr[6];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址;
S404:对字节3的加密算法,如下:
wr_data_enc[24] = wr_data[24] ^ wr_data[24+5] ^ wr_addr[5];
wr_data_enc[25] = wr_data[25] ^ wr_data[24+7] ^ wr_addr[9];
wr_data_enc[26] = wr_data[26] ^ wr_data[24+6] ^ wr_addr[7];
wr_data_enc[27] = wr_data[27] ^ wr_data[24+1] ^ wr_addr[2];
wr_data_enc[28] = wr_data[28] ^ wr_data[24+2] ^ wr_addr[3];
wr_data_enc[29] = wr_data[29] ^ wr_data[24+3] ^ wr_addr[8];
wr_data_enc[30] =~wr_data[30] ^ wr_addr[6];
wr_data_enc[31] = wr_data[31] ^ wr_data[24+4] ^ wr_addr[4];
其中,wr_data表示加密前的数据,wr_data_enc表示加密后的数据,wr_addr表示系统总线将数据要写入PSI FLASH的地址。
4.一种SPI FLASH加密数据的读取方法,包括如下步骤:
S1:系统总线发送读命令至命令模块,并等待数据模块反馈读数据;
S2:命令模块判断读命令中的地址是否在数据模块的读数据缓存单元中命中,如果命中,则直接将字节数据反馈给总线,并转到步骤S10,否则转到步骤S3;
S3:向系统总线反馈等待信号;
S4:将读命令传递至状态机模块,通过状态机模块进行状态转换,将读命令解析后传递至协议转换模块;
S5:协议转换模块按照顺序将读命令序列输出至SPI FLASH;
S6:SPI FLASH接到读命令序列后,将字节数据序列发送至协议转换模块;
S7:协议转换模块将字节数据序列转成芯片内部的数据格式并反馈至状态机模块;
S8:状态机模块进行状态转换后将该字节数据传递至解密模块;
S9:解密模块通过解密算法对字节数据进行解密,然后将解密后的字节数据经数据模块反馈至系统总线;
S10:完成本次读操作;
所述步骤S9中包括如下步骤:
S901:对字节0的解密算法:
rd_data_dec[0] = rd_data[0] ^ rd_data_dec[2] ^ rd_addr[2];
rd_data_dec[1] = rd_data[1] ^ rd_data_dec[3] ^ rd_addr[3];
rd_data_dec[2] = rd_data[2] ^ rd_data_dec[5] ^ rd_addr[4];
rd_data_dec[3] = rd_data[3] ^ rd_data_dec[6] ^ rd_addr[5];
rd_data_dec[4] = rd_data[4] ^ rd_data_dec[7] ^ rd_addr[6];
rd_data_dec[5] =~rd_data[5] ^ rd_addr[7];
rd_data_dec[6] = rd_data[6] ^ rd_data_dec[0] ^ rd_addr[8];
rd_data_dec[7] = rd_data[7] ^ rd_data_dec[1] ^ rd_addr[9];
S902:对字节1的解密算法:
rd_data_dec[8] = rd_data[8] ^ rd_data_dec[8+6] ^ rd_addr[9];
rd_data_dec[9] = rd_data[9] ^ rd_data_dec[8+7] ^ rd_addr[8];
rd_data_dec[10] = rd_data[10] ^ rd_data_dec[8+0] ^ rd_addr[7];
rd_data_dec[11] =~rd_data[11] ^ rd_addr[6];
rd_data_dec[12] = rd_data[12] ^ rd_data_dec[8+1] ^ rd_addr[5];
rd_data_dec[13] = rd_data[13] ^ rd_data_dec[8+3] ^ rd_addr[4];
rd_data_dec[14] = rd_data[14] ^ rd_data_dec[8+4] ^ rd_addr[3];
rd_data_dec[15] = rd_data[15] ^ rd_data_dec[8+5] ^ rd_addr[2];
S903:对字节2的解密算法:
rd_data_dec[16] = rd_data[16] ^ rd_data_dec[16+3] ^ rd_addr[2];
rd_data_dec[17] = rd_data[17] ^ rd_data_dec[16+4] ^ rd_addr[4];
rd_data_dec[18] = rd_data[18] ^ rd_data_dec[16+6] ^ rd_addr[3];
rd_data_dec[19] = rd_data[19] ^ rd_data_dec[16+7] ^ rd_addr[9];
rd_data_dec[20] = rd_data[20] ^ rd_data_dec[16+0] ^ rd_addr[7];
rd_data_dec[21] = rd_data[21] ^ rd_data_dec[16+1] ^ rd_addr[8];
rd_data_dec[22] =~rd_data[22] ^ rd_addr[5];
rd_data_dec[23] = rd_data[23] ^ rd_data_dec[16+2] ^ rd_addr[6];
S904:对字节3的解密算法:
rd_data_dec[24] = rd_data[24] ^ rd_data_dec[24+5] ^ rd_addr[5];
rd_data_dec[25] = rd_data[25] ^ rd_data_dec[24+7] ^ rd_addr[9];
rd_data_dec[26] = rd_data[26] ^ rd_data_dec[24+6] ^ rd_addr[7];
rd_data_dec[27] = rd_data[27] ^ rd_data_dec[24+1] ^ rd_addr[2];
rd_data_dec[28] = rd_data[28] ^ rd_data_dec[24+2] ^ rd_addr[3];
rd_data_dec[29] = rd_data[29] ^ rd_data_dec[24+3] ^ rd_addr[8];
rd_data_dec[30] =~rd_data[30] ^ rd_addr[6];
rd_data_dec[31] = rd_data[31] ^ rd_data_dec[24+4] ^ rd_addr[4];
其中,rd_data表示解密前的数据,rd_data_dec表示解密后的数据,rd_addr表示读数据在FLASH中的地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510094016.8A CN104657288B (zh) | 2015-03-03 | 2015-03-03 | 一种spi flash加密接口及加密数据的读写方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510094016.8A CN104657288B (zh) | 2015-03-03 | 2015-03-03 | 一种spi flash加密接口及加密数据的读写方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104657288A CN104657288A (zh) | 2015-05-27 |
CN104657288B true CN104657288B (zh) | 2017-11-10 |
Family
ID=53248450
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510094016.8A Expired - Fee Related CN104657288B (zh) | 2015-03-03 | 2015-03-03 | 一种spi flash加密接口及加密数据的读写方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104657288B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108121679B (zh) * | 2017-08-07 | 2021-01-01 | 鸿秦(北京)科技有限公司 | 一种嵌入式SoC系统总线及其协议转换桥接装置 |
CN109240952B (zh) * | 2018-08-27 | 2022-02-15 | 北京计算机技术及应用研究所 | 一种高速数据加密NVMe-SATA转换器电路 |
CN114036096B (zh) * | 2021-11-04 | 2024-05-03 | 珠海一微半导体股份有限公司 | 一种基于总线接口的读控制器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101561888A (zh) * | 2009-05-12 | 2009-10-21 | 苏州国芯科技有限公司 | 一种实时加密sd卡及高速加解密方法 |
CN104317743A (zh) * | 2014-09-29 | 2015-01-28 | 上海华为技术有限公司 | 对spi flash的写保护方法和控制器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7835518B2 (en) * | 2006-04-03 | 2010-11-16 | Sandisk Corporation | System and method for write failure recovery |
IL187038A0 (en) * | 2007-10-30 | 2008-02-09 | Sandisk Il Ltd | Secure data processing for unaligned data |
-
2015
- 2015-03-03 CN CN201510094016.8A patent/CN104657288B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101561888A (zh) * | 2009-05-12 | 2009-10-21 | 苏州国芯科技有限公司 | 一种实时加密sd卡及高速加解密方法 |
CN104317743A (zh) * | 2014-09-29 | 2015-01-28 | 上海华为技术有限公司 | 对spi flash的写保护方法和控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN104657288A (zh) | 2015-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112329038B (zh) | 一种基于usb接口的数据加密控制系统及芯片 | |
US10313128B2 (en) | Address-dependent key generator by XOR tree | |
CN202650015U (zh) | 用于经加密存储器存取的系统 | |
CN103605632B (zh) | 一种axi总线与ahb总线的通信方法与装置 | |
CN102737270B (zh) | 一种基于国产算法的银行智能卡芯片安全协处理器 | |
CN102073808B (zh) | 一种通过sata接口加密存储的方法和加密卡 | |
CN104657288B (zh) | 一种spi flash加密接口及加密数据的读写方法 | |
CN101782956A (zh) | 一种基于aes实时加密的数据保护方法及装置 | |
EP3803672B1 (en) | Memory-efficient hardware cryptographic engine | |
CN103258172A (zh) | 一种芯片片外Nor Flash总线接口硬件加密装置 | |
JP2021507343A (ja) | 高性能周辺バスベースのシリアル周辺インターフェース通信装置 | |
CN101561888B (zh) | 一种实时加密sd卡及高速加解密方法 | |
CN104598404B (zh) | 计算设备扩展方法和装置、以及可扩展的计算系统 | |
CN203930840U (zh) | 一种硬件加密卡 | |
CN113177210A (zh) | 芯片结构及其操作方法 | |
CN103336920A (zh) | 用于无线传感网络soc芯片的安全系统 | |
CN102567689A (zh) | 基于相变存储器的非易失内存数据机密性保护方法 | |
CN102110066B (zh) | 一种税控加密卡的控制方法 | |
CN103400087A (zh) | 多接口加密板卡 | |
CN101482909B (zh) | 加密算法模块加速器及其数据高速加解密方法 | |
CN105721139B (zh) | 一种适用于有限io资源的fpga的aes加解密方法及电路 | |
WO2020118583A1 (zh) | 数据处理方法、电路、终端设备及存储介质 | |
CN106209370A (zh) | 椭圆曲线密码芯片装置、系统及数据缓存控制方法 | |
CN103701588A (zh) | 一种秘密共享硬件实现方法及装置 | |
CN107817477A (zh) | 一种雷达显控系统的信号源系统及实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171110 |