Apache Commons Crypto - 获取 IllegalBlockSizeException

韦斯蒂

我正在尝试使用以下方法使用 Apache Commons Crypto 处理 AES 数据的加密和解密。加密工作正常。但是当我尝试解密刚刚加密的数据时,我收到了这个块大小错误,我不完全理解,因为我将块大小设置为 1024,这当然是 16 的倍数。

javax.crypto.IllegalBlockSizeException: Input length (with padding) not multiple of 16 bytes  

这是我的代码:

        final int bufferSize = 1024;
    try {
      this.cryptoCipher.init(cipherMode, this.secretKeySpec, this.ivParameterSpec);
        ByteBuffer inBuffer = ByteBuffer.allocateDirect(bufferSize);
        ByteBuffer outBuffer = ByteBuffer.allocateDirect(bufferSize);
        inBuffer.put(getUTF8Bytes(dataToBeEncrypted));
        inBuffer.flip();
        int updateBytes = this.cryptoCipher.update(inBuffer, outBuffer);
        int finalBytes = this.cryptoCipher.doFinal(inBuffer, outBuffer);   <<<< EXCEPTION HAPPENS HERE!!!
        byte[] encoded = new byte[updateBytes + finalBytes];
        outBuffer.flip();
        outBuffer.duplicate().get(encoded);
        encryptedDecryptedData = DatatypeConverter.printBase64Binary(encoded);
    } catch (Exception exc) {
        LOGGER.logp(Level.SEVERE, MODULE_NAME, methodName, "encountered exception: {0}", exc);
    }
扎夫

AES 有一个块大小:16 字节,因此将块大小设置为另一个值是错误的。但是您没有设置块大小,只是创建了一个(在本例中)1024 字节的缓冲区。

大多数实现都接受一个数组,并将在内部一次处理一个块的输入。但是输入必须是块大小的精确倍数,这是通过填充完成的,通常是PKCS#7 padding,并且通过一个选项通过添加加密和删除解密来自动处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

解密时出现 javax.crypto.IllegalBlockSizeException

来自分类Dev

Apache Commons Net获取FTP服务器的文件类型

来自分类Dev

Apache Commons XMLConfiguration-如何通过属性名称获取对象?

来自分类Dev

获取 apache.commons.cli.CommandLine 作为字符串

来自分类Dev

解密时出现错误javax.crypto.IllegalBlockSizeException:

来自分类Dev

Apache Commons Unzip方法?

来自分类Dev

Apache Commons CLI(选项)

来自分类Dev

如何解决javax.crypto。IllegalBlockSizeException如果不增加大小,则为key

来自分类Dev

AndroidX数据存储-AES / CBC / PKCS7-javax.crypto.IllegalBlockSizeException

来自分类Dev

AES解密:javax.crypto.IllegalBlockSizeException:解密中的最后一个块不完整

来自分类Dev

javax.crypto.IllegalBlockSizeException:使用填充密码解密时,输入长度必须是16的倍数

来自分类Dev

将 JSON 与 AES 一起使用会抛出 javax.crypto.IllegalBlockSizeException

来自分类Dev

Apache Commons Lang HashCodeBuilder冲突

来自分类Dev

Apache Commons Lang 2与3

来自分类Dev

Apache Commons Configuration Cant保存

来自分类Dev

Apache Commons CLI参数值

来自分类Dev

Apache Commons CSV跳过行

来自分类Dev

Apache Class Commons Math的NoClassDefFoundError

来自分类Dev

Apache Commons CLI参数值

来自分类Dev

无法导入Apache Commons Jars

来自分类Dev

Apache commons 配置 spring 集成

来自分类Dev

Apache Commons EmailValidator 覆盖 isValidDomain

来自分类Dev

Apache Commons CSV:用逗号读取值

来自分类Dev

使用Apache Commons CLI的互斥选项

来自分类Dev

使用Apache Commons Collections中的MultiValueMap

来自分类Dev

如何从Apache Commons Collections创建新的MultiValueMap?

来自分类Dev

Apache Commons Logging中的打印格式

来自分类Dev

新gTLDS的apache commons-validator替代

来自分类Dev

NoClassDefFoundError:org.apache.commons.lang.StringUtils

Related 相关文章

  1. 1

    解密时出现 javax.crypto.IllegalBlockSizeException

  2. 2

    Apache Commons Net获取FTP服务器的文件类型

  3. 3

    Apache Commons XMLConfiguration-如何通过属性名称获取对象?

  4. 4

    获取 apache.commons.cli.CommandLine 作为字符串

  5. 5

    解密时出现错误javax.crypto.IllegalBlockSizeException:

  6. 6

    Apache Commons Unzip方法?

  7. 7

    Apache Commons CLI(选项)

  8. 8

    如何解决javax.crypto。IllegalBlockSizeException如果不增加大小,则为key

  9. 9

    AndroidX数据存储-AES / CBC / PKCS7-javax.crypto.IllegalBlockSizeException

  10. 10

    AES解密:javax.crypto.IllegalBlockSizeException:解密中的最后一个块不完整

  11. 11

    javax.crypto.IllegalBlockSizeException:使用填充密码解密时,输入长度必须是16的倍数

  12. 12

    将 JSON 与 AES 一起使用会抛出 javax.crypto.IllegalBlockSizeException

  13. 13

    Apache Commons Lang HashCodeBuilder冲突

  14. 14

    Apache Commons Lang 2与3

  15. 15

    Apache Commons Configuration Cant保存

  16. 16

    Apache Commons CLI参数值

  17. 17

    Apache Commons CSV跳过行

  18. 18

    Apache Class Commons Math的NoClassDefFoundError

  19. 19

    Apache Commons CLI参数值

  20. 20

    无法导入Apache Commons Jars

  21. 21

    Apache commons 配置 spring 集成

  22. 22

    Apache Commons EmailValidator 覆盖 isValidDomain

  23. 23

    Apache Commons CSV:用逗号读取值

  24. 24

    使用Apache Commons CLI的互斥选项

  25. 25

    使用Apache Commons Collections中的MultiValueMap

  26. 26

    如何从Apache Commons Collections创建新的MultiValueMap?

  27. 27

    Apache Commons Logging中的打印格式

  28. 28

    新gTLDS的apache commons-validator替代

  29. 29

    NoClassDefFoundError:org.apache.commons.lang.StringUtils

热门标签

归档