我正在尝试使用 Tivaware 哈希加速函数来处理 超长文件(SHA256)、方法是调用 SHAMD5DataWrite ()& SHAMD5ResultRead () Tivaware API。 但在这些示例中,我发现此函数(SHAMD5DataWrite (()) 需要预先使用 SHAMD5HashLengthSet (),它需要先验地知道 要为哈希计算处理的字节的总长度。 查看 源代码 、我注意 到该函数会在调用哈希函数时将其重置计算:
空 SHAMD5HashLengthSet (uint32_t ui32Base、uint32_t ui32Length)
{
//
//检查参数。
//
断言(ui32Base == SHAMD5_base);
//
//设置长度寄存器并开始处理。
//
HWREG (ui32Base + SHAMD5_O_length)= ui32Length;
}
我已经测试过、我得出结论。 SHAMD5HashLengthSet ()以增量方式调用,则之前的哈希计算会丢失。
在我的情况下,为了准确地知道数据的总长度(以字节为单位),必须处理整个文件以计算字节(这将需要宝贵 的时间)或将文件加载到内存中(由于 文件的大容量,这是不可能的)。 几十兆字节。)
因此、我询问 是否可以使用 SHAMD5DataWrite ()保存哈希计算的先前状态 、以便 以真正增量的方式处理哈希、而无需事先了解要处理的总字节、这在某些 SW 库中发生 ( 使用速度非常慢,在 USB 笔驱动器中保存相同大小的文件时,浪费了大约30%的时间)。