我正在尝试在Verilog中调试SHA512实现,但我无法在任何地方找到示例消息计划。我用Crypto ++制作了一个简单的C ++程序,但我无法找到要调试的变量来查看完整的消息调度,因为它是用汇编语言编写的。
我需要一个示例计划或帮助来识别加密++计划
答案 0 :(得分:1)
在项目代码中包含crypto++
,然后打开sha.h
文件并添加断点,使用debug编译代码,然后当您的代码在断点处暂停时,您将看到整个SHA512代码并且您将能够调试并查看包括消息计划在内的所有变量。如果在SHA512函数中添加断点并使用debug编译代码,则不会看到汇编代码,相反,您将看到它的C ++源代码,并且您将能够将变量添加到监视窗口并检查它们的值。
你也可以在调试(步入)时按F11
进入哈希函数,再次它不会是汇编,你会看到哈希函数的C ++代码。然后按照代码查看SHA消息计划。
正如您在每轮的SHA中所知,在消息计划数组k[i]
中有一个循环常量w[i], 0 ≤ i ≤ 63
和一个条目。因此,打开sha.cpp,你会看到w变量,这就是你需要调试的东西。
另外我要告诉你,SHA代码和Crypto++
的很多部分都是用assembly
编写的,所以你调试或读代码并不重要,它是用汇编语言编写的。
所以你可以取消注释
"// smaller but slower"
部分使用sha.cpp并使用C ++代码而不是汇编代码,或者只使用另一个用于SHA的库,您可以轻松地进行调试。