如何使用java密码aes cbc
我使用密码如何使用java密码aes cbc,java,encryption,aes,Java,Encryption,Aes,我使用密码AES cbc。我有一个加密的第三部分字符串和一个密钥 我想问一些问题 当我解密时,我得到了一个例外 javax.crypto.BadPaddingException: Given final block not properly padded at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..) at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..) at com.sun.cry
AES cbc
。我有一个加密的第三部分字符串和一个密钥
我想问一些问题
当我解密时,我得到了一个例外
javax.crypto.BadPaddingException: Given final block not properly padded
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
我在论坛上读到,这可能是因为加密密钥和解密密钥不同。这会发生在我的问题上吗
还有我如何与cbc合作我需要一个iv向量。但我不知道iv向量是加密的。我需要这个向量吗?。如何获取I?CBC代表密码块链接,这意味着加密一个数据块的输出与下一个输入块进行异或运算。对于第一个块,一个随机数据块(称为IV)与输入进行异或。IV应该只是随机数据,在执行加密时生成。你肯定需要静脉注射,而且没有办法恢复。你只能从生成它的人那里得到它。几乎可以肯定,没有正确的IV是填充异常的原因。填充错误通常意味着解密失败,但不能依靠解密来确定正确的解密,如果报告给调用方,则可以创建填充oracle,用于在没有密钥的情况下恢复原始文本。这可能是因为加密和解密的填充方法、模式、密钥或iv不同 如果密钥和iv完全符合要求,则最好是iv长度与AES的块相同,AES的块长度为16字节。密钥可以是128位(16字节)、192位(24字节)或256位(32字节)
对于CBC模式,需要一个iv,最佳实践是生成一个随机iv,并将其预先添加到加密数据中,从而允许解密具有相同的iv。iv不需要保密。如果消息只有一个块长,iv只是异常的原因。错误的静脉注射只会影响第一个街区。啊,没错。我想加密,但解密你当然是正确的。考虑接受有帮助的答案。要接受答案,请单击最佳答案旁边的空心复选标记,这样做将提高您的声誉并允许更多功能,有关更多详细信息,请参阅。也请考虑回去接受过去的答案,这样做会增加你的声誉,并允许更多的能力,请参阅