我使用RijndaelManaged加密和解密数据。我很可能误解了初始化向量的意义,但我发现,如果我在解密数据时将其设置为不同的值,那么除了前16个字符之外的所有字符仍然可以正确解密。这是预期行为吗?
是。在CBC模式下,每个密文块用作下一个密文块的IV。使用有缺陷的IV会弄乱第一个16字节块,但随后的块将不受影响。这可能是一个有用的属性,因为它允许在错误块之后进行错误恢复,这在某些情况下可能很重要。它还说明了为什么没有必要将IV保密(不像密钥!)。