Encryption HMAC-SHA码的Endianness

Encryption HMAC-SHA码的Endianness,encryption,sha,hmac,endianness,Encryption,Sha,Hmac,Endianness,我正在传送AES信息。我的理解是:1。AES算法将消息视为按字节处理的消息,并且是endian中性的。2.就发送和接收而言,初始化向量是endian中性的 我还在计算消息的HMAC-SHA384代码。从我的阅读中,听起来好像HMAC-SHA384需要字节交换,如果传输端号(在我的例子中是大端号)与机器端号不匹配。交换应从字节0和47、1和46开始,依此类推?有谁能比我更了解这个问题吗 我目前使用.NET HMACHAsHAK4类,但在另一端我将编写C++代码,还不知道什么库将提供HMAC代码。

我正在传送AES信息。我的理解是:1。AES算法将消息视为按字节处理的消息,并且是endian中性的。2.就发送和接收而言,初始化向量是endian中性的

我还在计算消息的HMAC-SHA384代码。从我的阅读中,听起来好像HMAC-SHA384需要字节交换,如果传输端号(在我的例子中是大端号)与机器端号不匹配。交换应从字节0和47、1和46开始,依此类推?有谁能比我更了解这个问题吗


我目前使用.NET HMACHAsHAK4类,但在另一端我将编写C++代码,还不知道什么库将提供HMAC代码。

LePePe是正确的,都是作为字节数组发送的。您可以非常确定接收到的字节数组将符合NIST规范和测试向量。因此,在这种情况下,您不应该过度担心endianness


如果有人需要担心的话,那就是散列函数的实现者。例如,NIST不幸指定了一台小型endian机器(英特尔处理器)作为SHA-3的参考平台。Skein的第一个版本有不正确的测试向量,因为在第一次迭代(1.0)中有一个关于endianness的错误。

leppie是正确的,两者都作为字节数组发送。您可以非常确定接收到的字节数组将符合NIST规范和测试向量。因此,在这种情况下,您不应该过度担心endianness


如果有人需要担心的话,那就是散列函数的实现者。例如,NIST不幸指定了一台小型endian机器(英特尔处理器)作为SHA-3的参考平台。Skein的第一个版本的测试向量不正确,因为在第一次迭代(1.0)中有一个关于endianness的错误。

endianness与处理字节数组无关。欢迎使用stackoverflow,Wiley。endianness与处理字节数组无关。欢迎使用stackoverflow,Wiley。如果您仍然感到困惑,如果NIST提供了十六进制测试向量,那么最左边的字节就是索引最低的字节。如果只需要散列的一部分,则取最左边的字节。如果我理解正确,您是说所有正确的SHA-384实现都应该生成一个小的endian格式的字节数组,因为这符合参考平台?不,内部是big-endian。最终结果只是一堆字节。在规范中,“第一个字节”可以被认为是最左边的字节。之后,它是特定于实现的。关于这一点的唯一真实信息是FIPS 180-2标准,确切地说是第3部分。如果您仍然感到困惑,如果您有NIST提供的十六进制测试向量,那么最左边的字节就是索引最低的字节。如果只需要散列的一部分,则取最左边的字节。如果我理解正确,您是说所有正确的SHA-384实现都应该生成一个小的endian格式的字节数组,因为这符合参考平台?不,内部是big-endian。最终结果只是一堆字节。在规范中,“第一个字节”可以被认为是最左边的字节。之后,它是特定于实现的。关于这一点的唯一真实信息是FIPS 180-2标准,确切地说是第3部分。