问题标签 [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 - RSA解密JAVA BadPadding
我正在尝试集成一个 API,我必须在其中以 RSA 加密和 BASE64 编码形式发送数据。作为回应,我得到了一个 BASE64 字符串,它应该在我的最后被解码和解密。我能够以加密和编码的形式发送数据。此外,我收到了响应 BASE64 字符串,但我无法解密该字符串。在我的解密中,我收到以下错误:
我使用以下加密:
参数是一个 (String,String) 映射,我已将在 API 中发布所需的参数放入其中。加密后,我在 POST 请求中发送“securePayload”,作为响应,我得到了一个 BASE64 编码的字符串,我应该对其进行解码和解密。对于解密,我使用以下代码:
我在以下代码中使用上述函数来解密我在 API 响应中得到的字符串“数据”:
要读取私钥,我使用了以下代码:
请帮忙。我在做什么错?我检查了我最后使用的公钥和私钥对是否正确。
java - 如何修复 javax.crypto.BadPaddingException:Java 中的解密错误
我正在尝试使用加密制作服务器/客户端 Echo 程序。
通过寻找一点,我发现这篇文章有一个简单的分步指南的答案,说明需要做什么来加密服务器和客户端之间的通信。我现在正处于解密密钥的最后一步。我的问题是,当服务器尝试解密密钥时它失败并吐出这个错误:
我已经尝试多次更改填充,但老实说我不知道还能做什么。
这是客户端在加密密钥时所做的:
这是服务器在尝试解密密钥时所做的:
无论如何,提前谢谢。
visual-studio - Arduino AES128 加密 - C# 解密填充问题
我需要单向加密通信。arduino 加密消息并通过串行将其发送到 C# 程序进行解密。
用于加密的 arduino 代码如下所示:
加密的消息是:
jEYGnz3TYm+aWveh8wNATw==
明文消息是:
24051984
在 PC 端,我在 Visual Studio 中有下一个代码:
触发条件发生后,我收到一条错误消息:
System.Security.Cryptography.CryptographicException: 'Padding is invalid and cannot be removed.'
如果我认为正确,uint8_t (Arduino) 与byte[] (Visual Studio C#) 相同,还是其他地方的错误?
java - 我在解密使用 RSA 生成的公钥(.jks)编码的 128 位 AES 密钥时遇到 BadPaddingException
// 用于 RSA-AES 加密/解密的 Java 8 示例。
公共类 AESwithRSA {
// 使用 RSA 生成公钥和私钥
// 首先创建一个AES Key
// 使用 AES 密钥加密我们的数据
// 使用 RSA 私钥加密 AES 密钥
// 首先用 RSA Public key 解密 AES Key
// 现在使用解密的 AES 密钥解密数据!
//显示所有输出
// 创建一个新的 AES 密钥。使用 128 位(弱)
// 使用 AES 密钥加密文本
// 使用 AES 密钥解密文本
// 使用 RSA 私钥加密 AES 密钥
// 使用 RSA 公钥解密 AES 密钥
//获取公私.jks格式密钥
}
//下面是输出
java - RSA 加密中的 BadPaddingException
我的 RSA 加密程序中出现了 BadPaddingException。我不知道它为什么会发生。
我很感激任何帮助或提示!我编写的处理字符串加密的函数工作正常,如主函数中所示。我不知道要添加什么。该代码通过了“测试”系统输出,但也引发了一些异常。我希望您知道缺少什么或我必须添加什么才能使其正常工作。
java - 给定最终块在 AES 解密中未正确填充
我想在 Javascript 中进行加密并在 Java 中解密它,但它一直让我遇到错误的填充异常。我不知道该怎么做。
这是代码
错误是这样的:javax.crypto.BadPaddingException:给定最终块未正确填充。如果在解密期间使用了错误的密钥,则可能会出现此类问题。
iv : [0000: A7 18 56 5D 79 22 2D C8 3F 3A 62 A0 BE 22 A1 D2 ..V]y"-.?:b.."..]
请帮助我,我需要尽快完成它。谢谢。
java - 使用加密值解密 JSON 数据时出现 BadPaddingException
我有一个第三方 API,我必须以加密形式以 JSON 格式发送数据。JSON 中的数据如下所示:
注意: json 值中的数据被修剪以仅显示示例。
我正在使用 Java11HttpClient 将此请求发送到给定的端点。具有所有加密值的请求得到了很好的处理,我得到了一个看起来与请求相同的期望结果(响应再次在键值配对 JSON 中并且值被加密)。
我必须再次解密这个 JSON“encryptedKey”才能获得实际内容。解密是使用“RSA/ECB/PKCS1Padding”完成的。因此,当我通过这个 encryptedKey 字符串来解密代码时,它给了我 BadPaddingException。
我正在使用这段代码:
HttpResponse 响应 = httpClient.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
上面的代码适用于请求,并以与预期相同的结构给我一个响应。但问题似乎在于String中响应的反序列化过程。
选项 2:当我选择从代码生成的加密请求时,如果在 Postman 中作为有效负载添加相同的请求,我会得到类似的响应。现在,如果我从 Postman 响应中解密该加密密钥,使用相同的代码库它会给我一个有效数据而没有填充异常。
需要有关发送此类请求的方法以及使用 Spring 或 Java11 等中的某些库处理响应数据的建议。
到目前为止,我已经尝试过 Unirest、Java11HttpClient 和 OkHttp,但结果相同。
提前致谢。
java - javax.crypto.BadPaddingException:解密错误 - 无法从文件中解密多个块
希望有人可以在这里为我指明正确的方向。
我对加密(Java 或其他)不是特别熟悉,但我说过我会帮助某人完成他们指定使用 RSA 加密/解密的任务。
为了让自己熟悉要完成的工作,我整理了一个小示例程序:
- 生成 6 个随机数,并将它们放在逗号分隔的字符串中
- 加密数字序列
- 将加密的数字序列附加到文件中 - 如果程序运行多次,则可以多次写入同一个文件
- 读取加密文件 - 应该获取所有已写入的序列
- 解密每个序列并打印出逗号分隔的字符串集合
这在第一次尝试时工作正常 - 即当第一个序列被写入空文件时 - 并且返回正确的数字序列。
当文件包含多个加密序列时,这会导致decrypt
例程以BadPaddingException
. 在这一点上我已经完成了一个步骤,每个byte[]
要解密的(代表一个加密的序列)都是 128 个字节,所以它不像是不规则的字节数导致了这个问题。
我知道 RSA 不再是推荐的方法,但这是我必须了解的规范。我也知道有很多关于 RSA 和 BadPaddingException 的问题,但我还没有遇到过处理这个问题的问题。
我的示例代码如下:
如果有人能发现这有什么问题,我将不胜感激!
谢谢
java - 验证在 JavaCard 上签名的数据时出现 Java BadPaddingException
我正在用密码在 JavaCard 上签署一些数据,然后将其输出到文本文件中,将其读入 java 程序并尝试验证它。我不断收到 BadPaddingException。
我在我的 JavaCard 小程序上这样签名:
并像这样验证它(在我的 Java 程序上):
当使用带有“RSA”的 Cipher.getInstance 时,它默认为 RSA/ECB/RKPCS1Padding 不是吗?我被困在如何摆脱错误上。
编辑:为了清楚起见,更改加密和解密以签名和验证
java - SOAP 加密 - javax.crypto.BadPaddingException:未知块类型
我正在尝试对 SOAP 消息进行签名和加密,但出现此错误 -
签名或解密无效;嵌套异常是:javax.crypto.BadPaddingException:未知块类型
由于签名方法中没有明确提到填充,我假设这是加密方法中的错误。
这是我的密钥加密方法:
并且body的加密工作类似(String s是soap body转换为字符串)
我发现了这篇文章 - javax.crypto.BadPaddingException: unknown block type where conversion to string is known as an issue, 但我不知道如何在消息中发送 byte[] ......我试过了
然后我在我的soap消息中传递了那个字节[](看起来像这样[B@6bf256fa),它给了我另一个错误decode.divisible.four。所以我想这不是合适的方法。
PFB 我的全部要求
先感谢您!