SHA1算法在DS28E01上验证(二)结束篇

1.sha1原理
sha1算法原理这里不做详细推导,具体细节请参考相关文档,这里是简单提示需要加密的数据需要512bit对齐,里面包含原始数据,对齐数据和长度信息
2.modelsim仿真
这里输入sha_i = {32’h8,448’h0,32’h63800000};
32‘h63是字符C的hex值,8是补齐开始的第一位为1,后面为0;
32‘h8是长度信息,原始数据是一个字节
在这里插入图片描述
输入以上数据,输出结果为160’h84a516841ba77a5b4648de2cd0dfcb30ea46dbb4
采用在线计算器
在这里插入图片描述
可见结果一致,验证sha1算法正确
3.DS28E01输入数据格式
输入格式如下:
在这里插入图片描述
详细请参考数据手册
4.sha1算法在fpga上验证
在上一节提到的romid为000001b229d62f,eeprom为0,**为0000000000000001
将这些数据按照数据个数组成512位数据,modlesim仿真如下:
在这里插入图片描述
输出结果为185a36892fbed8007ca75109edf579fc3838a1fb
ila抓取的结果为
在这里插入图片描述
结果为185a36892fbed8007ca75109edf579fc3838a1fb与仿真一致,验证正确
5.DS28E01算法与sha1标准算法区别
通过标准sha1算法,输入第4步骤中数据,输出结果应该为7f9f598a1f8c838915622e07fe27ce72fc0b83eb,与ila抓取的不一致,通过观察剥削,modelsim输出的前一拍时正确的和结果一致,由此可以判断出DS28E01的sha1算法没有最后一步的系数相加,这一点尤为重要
6.注意事项 DS28E01 sha1算法没有标准算法的第80步系数相加