问题标签 [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.
android - 重新打开应用程序后尝试解密时,Android cipher.doFinal 出现 BadPaddingException
问题可能很长,但我会尽量详细描述。
这是一个演示,有我的问题。
我有一个 android 应用程序,我想添加一个函数,允许用户在 SharedPreferences 中加密和保存他们的密码,并从 SharedPreferences 读取和解密它们。仅当指纹已注册且指纹有效可作为验证方式获取这些密码时才可用。
存储时:
- 用户输入密码
- 通过 AndroidKeyStore 生成的 SecretKey 创建加密模式密码
- FingerprintManager 验证密码(密码 A)并获得真正的加密密码(密码 B)
- 由指纹管理器支持的密码(密码 B)加密密码
- 在 SharedPreferences 中存储加密的密码和密码 iv
阅读时:
- 读取密码 iv 并创建解密模式密码(密码 C)
- 有效指纹并获得真正的解密密码(密码D)
- 读取加密密码并用真正的解密密码(密码D)解密
我的初始化方法:
如果不关闭应用程序一切正常!!!
但是,当我终止进程并重新启动它时,在执行 cipher.doFinal() 时,我在 decryptPin() 方法中得到了 BadPaddingException。
有谁可以帮我解决这个问题?是不是SecretKey引起的?谢谢!!!
java - BadPaddingException:由于 Java 版本不同,给定最终块未正确填充
我在客户端安装了 java 8,我正在使用以下技术加密我的数据文件
现在我正在根据下面的代码在我安装了 Java 7 的服务器端解密。
这样做给我以下错误
当我在两边都安装了相同的 java 版本(1.7)时,相同的代码可以正常工作。我们如何解决这个问题,以便在不更改任何一方的 java 版本的情况下
java - 使用 AES 加密时出现错误填充异常
我正在为我的项目进行 AES 加密。我决定做文件加密当我在同一个函数中执行加密和解密时,它运行没有任何缺陷。但是当我分开做时,解密部分遇到了一些问题。
我对这两个功能使用了相同的密钥,但它不能单独用于解密。
这是我的加密代码:
这是我的解密代码:
这是我单独执行解密时的错误消息。
encryption - 无效键异常
我正在从文件中检索文本密码作为输入,并对其应用 AES 加密,然后对其进行解密。当我第一次这样做时,每 5 次有 4 次运行正确(加密解密成功),但有 1 次抛出 BadPaddingException。以下是我写的:
我需要解决这个问题。在某处,我读到 BadPaddingExcpetion 是由于使用 String 完成的操作而发生的,而不是应该使用实际字节的位置。因此,我将代码更改为以下内容:
现在,我收到了 InvalidKeyException。这一次,我读到密钥的大小应该是 16 字节。但我不知道如何应用这个。需要解决这个问题!
javascript - 华硕 zenfone5 t00j AES 256 解密问题
我正在开发移动应用程序和客户端,我们在服务器端使用 JavaScript (kony) 它的 java。这适用于除英特尔芯片组设备 (ASUS Zenfone) 之外的所有其他设备。PFB 用于加密的 JS 代码
这里使用 sha256 和 sha512 哈希算法创建 IV 和密钥。
PFB 我们在服务器端用于解密加密字符串的代码片段
密钥生成代码
服务器端的 IV 生成
正如我上面提到的,这在英特尔芯片组设备中失败了。这是我在解密字符串时遇到的异常
当我尝试加密字符串“Test”时,我得到“Tn2SzI8dmgCmEvQrzdqLxw==”作为我在下面的java代码中使用的加密字符串,并试图解密我得到以下错误的地方
这是我用来解密的JAVA代码
java - RSA 错误填充异常
我正在尝试对 Android 上的数据进行 RSA 加密并将其发送到服务器(spring)。得到 BadPaddingException :
方法:服务器以字符串形式发送公钥,我将其转换为 PublicKey 对象并在加密后作为字符串从 App 发送数据。服务器有一个私钥字符串,它被转换为 PublicKey 对象,然后数据被解密。
任何帮助将非常感激。
密钥的生成:
服务器方法:
java - BadPaddingException:尝试解密字节数组时出现解密错误?
有我的代码,由于某种原因,我收到了这个错误,我认为这与使用 Cipher 类的默认构造函数有关。
为什么我会收到此错误?
java - Java AES-256-CBC 未按预期工作
创建了一个新类以在 CBC 和 CTR 模式下使用 AES 进行测试。因此,使用此代码,CTR 工作正常,但 CBC 返回空数组。不知道为什么会这样,希望有人能解释一下。
因为我想在我的程序中同时使用 CTR 和 CBC,所以我想使用可以同时处理两者的 AES 实现。对于给定的实现,这可能吗?
我想它与定义的填充有关。如果我在解密中使用 NoPadding,则密文会正确解密,但不会删除填充。如果我在解密时使用 PCS5Padding,则会返回一个空数组或 null。第一次加密也返回一个空数组......
按照 zaph 的建议添加了 doFinal 调用,现在我收到以下错误:
在我的程序上下文中,我将通过加密的网络套接字发送和接收数据包。所以我需要独立地解密和加密每个数据包。我不想在每个数据包的末尾调用 doFinal,因为这意味着相同的数据包发送两次将以相同的方式加密。如果那是我想要的,那么我可以使用 ECB 模式。;)
例如,我想向 EchoServer 发送消息“Hello World”两次,服务器应该能够解密第一个接收到的数据包,而不会意识到后面还有更多数据包。此外,客户端应该能够加密和发送消息,不知道用户是否会提供应该发送的额外数据。不确定在这种情况下必须如何以及在何处添加填充。
Cipher.doFinal 每次调用后都会调用 Cipher.init,这很烦人。因此,如果我将“Hello World”加密两次并在每次加密后调用“doFinal”,那么两个数据包(如果每个“Hello World”都有自己的数据包)看起来都是一样的。
java - RSA 解密失败,javax.crypto.BadPaddingException:解密错误
我使用 bouncycastle 解密 RSA 加密字符串,数据以 Base64 编码,但是当我 javac Decrypt.java 和 java Decrypt 时,它显示错误“avax.crypto.BadPaddingException: Decryption error”,这是代码:
当我运行代码时,我收到此错误:
我确信密钥是正确的,因为当我用 Python 解密它时,它运行良好。
谁能帮我解决这个错误?谢谢。
java - Java:没有捕获故意的 BadPaddingException
我的应用程序提示用户输入用于加密控制文件的密码。如果输入了错误的密码,应用程序会通过创建一个新的控制文件来做出响应。因此我需要捕获一个 BadPaddingException 以便触发适当的响应。
这是应该生成异常的代码片段
为了完整起见,这里是上面调用的 decryptHashFile 方法
当我故意输入错误的密码时,我看到了这个堆栈跟踪,但是我的代码(我在示例中使用了 println)没有被执行: