问题标签 [badpaddingexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 使用相同密钥解密 AES 时出现 BadPaddingException
这是测试仪:
由于最后一个断言而失败:
尝试执行时:
给出这个堆栈跟踪:
这些是我的功能:
如果检查键是否相同的断言有效,为什么会出现该异常?
java - AES 文件解密“给定的最终块未正确填充”
我想加密然后解密文件使用AES。我已经阅读了很多关于 error 的主题"Given final block not properly padded"
。但我没有找到适合我的解决方案。
很抱歉指定我的代码的语言,我不知道写语言 java
这是我的代码:
变量
创建密钥
方法加密
方法解密
更新
解决方案:编辑大小为buffer
16 的倍数。使用 CipherInput/Output 读取/写入文件。
TksArtjom B.
java - 解密期间出现“javax.crypto.BadPaddingException:pad block损坏”异常
我正在开发一个现有的应用程序,但尚未编写它。
在此方法中解密用户名和密码期间,我得到了这个异常(javax.crypto.BadPaddingException:pad block损坏):
encrypted 的值是一个字节数组,其中包含 -89 到 126 之间的 16 个数值。任何人都可以看到这段代码的问题吗?这是所有重要的代码:
在 Settings 类(Encryptor 类的客户端)内部:
完整的加密器类:
这个答案建议不要使用 SecureRandom 来生成密钥。我正在处理的应用程序中的代码确实为此使用了 SecureRandom。我该如何解决?
这是使用 SecureRandom 的代码。
java - 在 Android 中使用分块解密时最后丢失字节
首先,我在 Java/Android 中创建了一个小的加密/解密程序。这没什么特别的,只是非常基本,所以没有缓冲区或任何东西。在那里使用了 Iv 和 Salt 我在文件开头写了 salt 和 iv (24 bytes) 。第一个版本能够加密/解密一个文件,并且两个文件最终的二进制文件相同。
现在我尝试不一次读取和处理整个文件,而是使用缓冲区(大小为 1024 字节)分步进行。我将我的更改cipher.doFinal
为多个 cipher.update,cipher.doFinal
最后一个为空。
加密:
解密:
所以,现在的问题是,当我运行它并最后比较文件时,
1. 我在解密时在 doFinal 上得到了 BadPaddingExeption。和
2. 被加密和解密的文件在文件末尾缺少 29 个字节。
不用担心,IV 和盐通常是随机的,只是静态测试。
此外,丢失的字节取决于文件大小。刚刚尝试了另一个文件,它缺少 21 个字节。
java - Java 签名 pdf keystore.load 抛出 javax.crypto.BadPaddingException
我使用在此页面上找到的以下代码使用 *.p12 文件对 PDF 进行签名。
该代码在我的计算机上运行良好。但是如果我用 eclipse 创建一个 .war 文件并将其部署在服务器上,服务器会抛出 javax.crypto.BadPaddingException:
我在其他线程中找到的所有信息都表明我用来加载 KeyStore 的密码是错误的,但我确信它没有错。
有什么想法吗?非常感谢!
java - java 7中的填充异常:引起:javax.crypto.BadPaddingException:给定最终块未正确填充
嗨,我正在使用 tripedes 键从输入流中读取并写入输出流。在 java7/8 中获取此执行:由:javax.crypto.BadPaddingException:给定最终块未正确填充
谁能告诉我 cipher.doFinal 中可能有什么错误?
更新,从评论中复制的加密代码:
java - BadPaddingException 和一些文件卡在 99%
我试图从这里收集有关加密/解密的所有可能信息。修补它,一些成功和失败。
但是现在我已经应用了代码以及它的成功和失败。一些文件(exe 或 msi)正在运行,但它们仍然给出有关 BadPaddingException 的错误。此外,其他一些媒体文件,如(mp4、mkv 等),尽管已完全接收,但仍停留在 99% 并且没有超出此范围(只是一些微小的字节差异,但磁盘上的大小始终匹配)。
我只是想要一些帮助来摆脱这两个问题。文件 r 通过套接字编程从一台 PC 传输到另一台 PC。
服务器:(已编辑)
客户:
如果完全接收到加密数据
任何输入都受到高度赞赏。谢谢你。
编辑 1:添加了通过流接收的加密和解密文件大小的链接。Dropbox Link
Edit 2:所以最后在三位参与帮助我的成员的帮助下,问题得到了解决。我正在审查我的问题的其他解决方案,我遇到了这个解决方案,它帮助我深入思考后台发生的实际情况。感谢Artjom B.的推荐解决方案以及@zaph 和 @jtahlborn清除了我关于填充和输入/输出流的错误假设。
java - javax.crypto.BadPaddingException:给定最终块未正确填充...尝试使用 getbytes("UTF")
我已经尝试添加 getbytes("UTF") 或 getbytes("UTF-8"),因为它是在类似问题中提出的。它说我们需要在将字节转换为字符串时尝试 UTF,反之亦然。但它仍然不适用于我的代码......请帮助
java - 无法克服 javax.crypto.BadPaddingException
我正在编写一个加密图像中的文本的隐写术系统 - 我决定在将文本嵌入图片之前也要对其进行加密。隐写算法适用于字符串输入/输出。
由于我的心血来潮,我一直在尝试使用 DES 和 AES 算法,但遇到了上面的异常。我将展示例如 AES 算法的加密/解密方法:
这是调用(加密方面):
这是调用(解密方面)-例外:
哪里有问题?
密钥是相似的,字节数组也是相似的(我通过打印序列来检查它) - 但我被告知我不能使用getBytes()
以便从字符串转换为byteArray
我打算使用AES/DES
解密算法的时间。
android - android 6.0 javax.crypto.BadPaddingException:错误:1e000065:密码函数:OPENSSL_internal:BAD_DECRYPT
此代码在 android 6.0 之前运行良好,但如果加密文件大小小于约 1k 字节,则在 6.0 上会出错。
错误信息: