C++ 两个AES实现生成了不同的加密结果
我有一个应用程序,它使用开源libgcrypt加密/解密32字节的数据块。现在我将使用MicrosoftCryptAPI来替换它。我的问题是,libgcrypt和cryptApi方法生成不同的密文内容,因为我在CFB模式下使用相同的AES-256算法jm、相同的密钥和相同的IV,尽管密文可以由它们自己相应地解密C++ 两个AES实现生成了不同的加密结果,c++,encryption,aes,C++,Encryption,Aes,我有一个应用程序,它使用开源libgcrypt加密/解密32字节的数据块。现在我将使用MicrosoftCryptAPI来替换它。我的问题是,libgcrypt和cryptApi方法生成不同的密文内容,因为我在CFB模式下使用相同的AES-256算法jm、相同的密钥和相同的IV,尽管密文可以由它们自己相应地解密 能告诉我有什么问题吗?谢谢。这两种方法是采用不同的尾数,还是按不同的顺序分配键/IV中的字节 如果endianness假设不同,则可能需要对key、IV和/或明文中的字节重新排序,以获得
能告诉我有什么问题吗?谢谢。这两种方法是采用不同的尾数,还是按不同的顺序分配键/IV中的字节
如果endianness假设不同,则可能需要对key、IV和/或明文中的字节重新排序,以获得匹配结果。例如,如果您以abcdefgh的顺序提供字节,则可能需要将其切换为“dcbahgfe”以使事情正常进行。这两种方法是采用不同的尾数,还是以不同的顺序分配键/IV中的字节
如果endianness假设不同,则可能需要对key、IV和/或明文中的字节重新排序,以获得匹配结果。例如,如果您以abcdefgh的顺序提供字节,则可能需要将其切换为“dcbahgfe”才能正常工作。您的密钥和IV的长度是多少?
如果opentext的长度正好是256位,则密文是否不同?密钥和IV的长度是多少?
如果opentext的长度正好是256位,则密文是否不同?CFB还有一个附加参数,即每次迭代时的移位量。政府有一些信息。即,为每个块加密加密x位,其中x是AES的1和块大小128之间的任意值。我怀疑在您的代码中,Microsoft CryptoAPI和libgcrypt对x使用的值不同
如的文档中所述,Windows默认为x=8,即一次一个字节。这是KP_MODE_BITS参数。另一方面,对于n位分组密码,即对于AES,x=128,则为libgcrypt。我不确定libgcrypt是否可以使用另一个值。CFB还有一个额外的参数,即每次迭代时的移位量。政府有一些信息。即,为每个块加密加密x位,其中x是AES的1和块大小128之间的任意值。我怀疑在您的代码中,Microsoft CryptoAPI和libgcrypt对x使用的值不同
如的文档中所述,Windows默认为x=8,即一次一个字节。这是KP_MODE_BITS参数。另一方面,对于n位分组密码,即对于AES,x=128,则为libgcrypt。我不确定是否可以说服libgcrypt使用另一个值。我也有同样的问题,但使用的库不同。我注意到这个图书馆里有一件事;如果我传递的输入字节小于32字节,在这种情况下,它会显示两者都是相同的加密数据
你的情况就是这样吗?如果是这样,那就意味着问题出在填充机制上 我也有同样的问题,但有不同的库。我注意到这个图书馆里有一件事;如果我传递的输入字节小于32字节,在这种情况下,它会显示两者都是相同的加密数据
你的情况就是这样吗?如果是这样,那就意味着问题出在填充机制上 我认为问题在于块大小。正如您所说,您使用32字节作为块大小,确保两者的块大小相同,并且也支持。因为Aes的一些库块大小固定为16字节。我认为问题在于块大小。正如您所说,您使用32字节作为块大小,确保两者的块大小相同相同且支持。因为Aes的某些库块大小固定为16字节。我相信它们有不同的endianness。我相信它们有不同的endianness。我可以看到您的方向,但在CFB模式下,密码应该作为流密码有效运行,没有填充…密钥的长度是32字节,IV是16字节。无论opentext的大小如何,密文都是不同的。请重新排序key、IV和/或明文中的字节,并尝试它们的所有组合。没有人在工作。我可以看到你的方向,但在CFB模式下,密码应该作为流密码有效地运行,没有填充…密钥的长度是32字节,IV,16字节。无论opentext的大小如何,密文都是不同的。请重新排序key、IV和/或明文中的字节,并尝试它们的所有组合。没有人在工作。通过传递大于64的值调用此CryptSetKeyParam始终返回0失败,当模式位值不超过64时,此函数调用似乎对密文内容没有影响,这可能是因为我只需要在应用程序中调用加密函数一次。通过传递大于64的值调用此CryptSetKeyParam总是返回0失败,并且此函数调用似乎已失败 当模式位值不超过64时,对密文内容没有影响,这可能是因为我只需要在应用程序中调用加密函数一次。