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

文档序号:8339535阅读:来源:国知局
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[l] ~ wr_addr[9]; 其中,wr—data表示加密前的数据,wr—data—enc表示加密后的数据,wr—addr表示系统总线将数据要写入PSI FLASH的地址。
5.根据权利要求4所述的一种SPIFLASH加密数据的写入方法,其特征在于:所述步骤S4中包括如下步骤: 5402:对字节I的加密算法,如下: 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[ll] " wr_addr[6];wr_data—enc[12] = wr_data[12] "wr_data[8+l] " 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的地址。
6.根据权利要求5所述的一种SPIFLASH加密数据的写入方法,其特征在于:所述步骤S4中包括如下步骤: 5403:对字节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+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的地址。
7.根据权利要求6所述的一种SPIFLASH加密数据的写入方法,其特征在于:所述步骤S4中包括如下步骤: 5404:对字节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的地址。
8.一种SPI FLASH加密数据的读取方法,包括如下步骤: S1:系统总线发送读命令至命令模块,并等待数据模块反馈读数据; S2:命令模块判断读命令中的地址是否在数据模块的读数据缓存单元中命中,如果命中,则直接将字节数据反馈给总线,并转到步骤S10,否则转到步骤S3 ; 53:向系统总线反馈等待信号; 54:将读命令传递至状态机模块,通过状态机模块进行状态转换,将读命令解析后传递至协议转换模块; 55:协议转换模块按照顺序将读命令序列输出至SPI FLASH ; 56:SPI FLASH接到读命令序列后,将字节数据序列发送至协议转换模块;57:协议转换模块将字节数据序列转成芯片内部的数据格式并反馈至状态机模块; 58:状态机模块进行状态转换后将该字节数据传递至解密模块; 59:解密模块通过解密算法对字节数据进行解密,然后将解密后的字节数据经数据模块反馈至系统总线; SlO:完成本次读操作。
9.根据权利要求8所述的一种SPIFLASH加密数据的读取方法,其特征在于:所述步骤S9中包括如下步骤: 5901:对字节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]; 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加密接口,包括命令模块、数据模块、加密模块、解密模块、状态机模块以及协议转换模块,命令模块与系统总线相连;数据模块与系统总线、命令模块、加密模块以及解密模块相连;加密模块与数据模块、命令模块以及状态机模块相连;解密模块与数据模块、状态机模块相连;状态机模块与命令模块、加密模块、解密模块以及协议转换模块相连;协议转换模块与状态机模块、SPI FLASH相连。将传统的按字加密方式改成按字节采用不同算法分别加密的方式,取消了字节间的加解密依赖关系,使得软件对SPI FLASH的操作大为简化,在保证系统保密安全的基础上有效降低了软件操作的复杂度,提升了整个系统的效率。
【IPC分类】G06F13-16, G06F12-14
【公开号】CN104657288
【申请号】CN201510094016
【发明人】王运哲, 姚香君, 孙玉玺, 孙晓宁, 赵阳, 刘大铕, 刘奇浩
【申请人】山东华芯半导体有限公司
【公开日】2015年5月27日
【申请日】2015年3月3日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1