我正在使用Crypt::Rijndael
模块来解密一些应用程序数据。
我将加密数据、加密密钥和客户端 IV 作为输入。
在 432 个字节的应用程序数据中,解密输出的前 16 个字节总是错误的。
什么可能导致这个问题?
我正在使用Crypt::Rijndael
模块来解密一些应用程序数据。
我将加密数据、加密密钥和客户端 IV 作为输入。
在 432 个字节的应用程序数据中,解密输出的前 16 个字节总是错误的。
什么可能导致这个问题?
16 个字节为 128 位,与 AES/Rijndael 块大小相同。如果前 16 个字节是垃圾,然后是完整的消息,那么可能发生的情况是 IV 已预先添加到消息中,并且您正在尝试解密 IV 以及消息。要解决此问题,请提取传入密文的前 16 个字节并将其用作 IV。
或者,您有 16 个字节的垃圾,后跟部分消息,缺少前 16 个字节。在这种情况下,您可能使用了错误的 IV。确保您使用的是正确的 IV。逐个字节地检查它以确保它是正确的。特别是,确保正确处理传输 IV 时使用的任何编码。如果 IV 中有一点是错误的,你就会遇到问题。