Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java密码aes cbc_Java_Encryption_Aes - Fatal编程技术网

如何使用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只是异常的原因。错误的静脉注射只会影响第一个街区。啊,没错。我想加密,但解密你当然是正确的。考虑接受有帮助的答案。要接受答案,请单击最佳答案旁边的空心复选标记,这样做将提高您的声誉并允许更多功能,有关更多详细信息,请参阅。也请考虑回去接受过去的答案,这样做会增加你的声誉,并允许更多的能力,请参阅