我的部门需要使用由另一个部门编写的加密库,问题是加密库已经硬编码了它的 AES 计数器模式初始化向量(全零)。(基本上,其他部门拿走了 Bouncycastle 库并在其周围包装了他们自己的损坏代码。)我们已经记录了此代码的问题,因此现在除非管理层决定采取行动,否则我们将被困在使用损坏的加密库.
我想知道我们是否可以通过在明文前面加上一个唯一的 IV 来伪造一个正确的初始化向量,然后在解密后截断明文的前 16 个字节,例如
ciphertext = encrypt(++sixteenByteCounter + plaintext)
plaintext = decrypt(ciphertext).subArray(16, ciphertext.length)
这对我来说似乎很好,但我几乎不是密码学专家