一种spiflash加密接口及加密数据的读写方法_3

文档序号:8339535阅读:来源:国知局
] ~ 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+l] ~ 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的地址。
[0027]本实施例中,所述步骤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+l] ~ 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的地址。
[0028]本实施例还提供了一种SPI FLASH加密数据的读取方法,包括如下步骤:
S1:系统总线发送读命令至命令模块,并等待数据模块反馈读数据;
S2:命令模块判断读命令中的地址是否在数据模块的读数据缓存单元中命中,如果命中,则直接将字节数据反馈给总线,并转到步骤S10,否则转到步骤S3 ;
53:向系统总线反馈等待信号;
54:将读命令传递至状态机模块,通过状态机模块进行状态转换,将读命令解析后传递至协议转换模块;
55:协议转换模块按照顺序将读命令序列输出至SPI FLASH ;
56:SPI FLASH接到读命令序列后,将字节数据序列发送至协议转换模块;
57:协议转换模块将字节数据序列转成芯片内部的数据格式并反馈至状态机模块;
58:状态机模块进行状态转换后将该字节数据传递至解密模块;
59:解密模块通过解密算法对字节数据进行解密,然后将解密后的字节数据经数据模块反馈至系统总线;
SlO:完成本次读操作。
[0029]本实施例中,所述步骤S9中包括如下步骤:
S901:对字节O的解密算法:
rd_data_dec[O] = rd_data[0] ~ rd_data_dec[2] ~ rd_addr[2];rd_data_dec[I] = rd_data[l] ~ 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[I] " rd_addr[9];
5902:对字节I的解密算法:
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[ll]" 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];
5903:对字节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];
5904:对字节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中的地址。
[0030]以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。
【主权项】
1.一种SPI FLASH加密接口,包括命令模块、数据模块、加密模块、解密模块、状态机模块以及协议转换模块;其特征在于: 所述命令模块与系统总线相连,用于寄存来自系统总线的地址、读写信息、数据块大小及传输类型,并将系统总线的读写需求传递至数据模块和状态机模块,将状态机模块的当前操作状态反馈至系统总线; 所述数据模块与系统总线、命令模块、加密模块以及解密模块相连,数据模块用于寄存系统总线要写入SPI FLASH的字节数据以及从SPI FLASH中读取的字节数据; 所述加密模块与数据模块、命令模块以及状态机模块相连,用于将写入SPI FLASH的字节数据按照特定的加密算法转换成密文; 所述解密模块与数据模块、状态机模块相连,用于将从FLASH内读出的字节数据按照特定的解密算法转换成明文; 所述状态机模块与命令模块、加密模块、解密模块以及协议转换模块相连,用于解析来自命令模块的数据,以实现对SPI FLASH读写擦状态的转换控制,并反馈FLASH的状态信息至命令模块; 所述协议转换模块与状态机模块、SPI FLASH相连,实现SPI协议转换,即将命令和数据按照SPI协议组成相应的串行命令序列格式转送至片外的SPI FLASH,或者将从SPIFLASH串行读入的数据寄存重新组成字节或者字的数据格式。
2.根据权利要求1所述的一种SPIFLASH加密接口,其特征在于:所述数据模块内设置有读数据缓存单元和写数据缓存单元。
3.一种SPI FLASH加密数据的写入方法,包括如下步骤: S1:系统总线将写命令发送至命令模块,将字节写数据发送至数据模块; S2:命令模块接收到写命令后,判断写命令中的地址是否在数据模块的写数据缓存单元中命中,如果命中,则将缓存数据更新,并转到S7,否则转到S3 ; 53:命令模块将写命令传递至状态机模块,状态机模块对写命令进行状态转换; 54:通过加密模块对数据模块中的字节写数据进行加密处理; 55:将写命令以及经加密模块加密处理后的字节写数据依次传递至协议转换模块; 56:协议转换模块按顺序将命令序列输出至SPI FLASH内; 57:完成本次写操作。
4.根据权利要求3所述的一种SPIFLASH加密数据的写入方法,其特征在于:所述步骤S4中包括如下步骤: S401:对字节O的加密算法,如下:wr_data_enc[O] = wr_data[0] ~ wr_data[2] ~ wr_addr[2];wr_data_enc[I] = wr_data[l] ~ 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[
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1