我必须以小端形式生成sha256数据哈希.在使用sha 256算法之前,我想知道是否必须先将其转换为big endian.或者,如果算法是"与endian无关"的.
编辑:对不起,我想我不清楚.我想知道的是:sha256算法需要用某些位填充消息的结尾.第一步是在消息的末尾添加1.然后,用零填充它直到结束.最后,您必须以位为单位添加消息的长度.我想知道的是这个填充是否可以用小端进行.例如,对于640位消息,我可以将最后一个字写为0x280(大端)或0x8002000(小端).这个填充可以用小端进行吗?
小智 6
如果你想要的只是一个好的哈希,SHA256是与字节无关的.但是如果你正在编写SHA256并希望在正确实现时获得相同的结果,那么你必须在小端硬件上玩游戏.SHA256结合了算术加法(mod 2*32)和布尔运算,因此在内部不是字节序无关的.
SHA-256 实现本身应该负责填充 - 除非您正在实现自己的专用 SHA-256 代码,否则您不必处理这个问题。如果是,请注意“预处理步骤”中指定的填充规则表示长度是 64 位大端整数。请参阅SHA-2 - 维基百科
甚至很难弄清楚“与字节序无关”是什么意思,但哈希算法的所有位、字节和单词的顺序非常重要,所以我肯定不会使用这个术语。
| 归档时间: |
|
| 查看次数: |
5263 次 |
| 最近记录: |