问题标签 [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.

0 投票
0 回答
101 浏览

java - RSA解密JAVA BadPadding

我正在尝试集成一个 API,我必须在其中以 RSA 加密和 BASE64 编码形式发送数据。作为回应,我得到了一个 BASE64 字符串,它应该在我的最后被解码和解密。我能够以加密和编码的形式发送数据。此外,我收到了响应 BASE64 字符串,但我无法解密该字符串。在我的解密中,我收到以下错误:

我使用以下加密:

参数是一个 (String,String) 映射,我已将在 API 中发布所需的参数放入其中。加密后,我在 POST 请求中发送“securePayload”,作为响应,我得到了一个 BASE64 编码的字符串,我应该对其进行解码和解密。对于解密,我使用以下代码:

我在以下代码中使用上述函数来解密我在 API 响应中得到的字符串“数据”:

要读取私钥,我使用了以下代码:

请帮忙。我在做什么错?我检查了我最后使用的公钥和私钥对是否正确。

0 投票
0 回答
3613 浏览

java - 如何修复 javax.crypto.BadPaddingException:Java 中的解密错误

我正在尝试使用加密制作服务器/客户端 Echo 程序。

通过寻找一点,我发现这篇文章有一个简单的分步指南的答案,说明需要做什么来加密服务器和客户端之间的通信。我现在正处于解密密钥的最后一步。我的问题是,当服务器尝试解密密钥时它失败并吐出这个错误:

我已经尝试多次更改填充,但老实说我不知道​​还能做什么。

这是客户端在加密密钥时所做的:

这是服务器在尝试解密密钥时所做的:

无论如何,提前谢谢。

0 投票
1 回答
471 浏览

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#) 相同,还是其他地方的错误?

0 投票
1 回答
164 浏览

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格式密钥

}

//下面是输出

0 投票
1 回答
67 浏览

java - RSA 加密中的 BadPaddingException

我的 RSA 加密程序中出现了 BadPaddingException。我不知道它为什么会发生。

我很感激任何帮助或提示!我编写的处理字符串加密的函数工作正常,如主函数中所示。我不知道要添加什么。该代码通过了“测试”系统输出,但也引发了一些异常。我希望您知道缺少什么或我必须添加什么才能使其正常工作。

0 投票
0 回答
168 浏览

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.."..]

请帮助我,我需要尽快完成它。谢谢。

0 投票
0 回答
49 浏览

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,但结果相同。

提前致谢。

0 投票
0 回答
164 浏览

java - javax.crypto.BadPaddingException:解密错误 - 无法从文件中解密多个块

希望有人可以在这里为我指明正确的方向。

我对加密(Java 或其他)不是特别熟悉,但我说过我会帮助某人完成他们指定使用 RSA 加密/解密的任务。

为了让自己熟悉要完成的工作,我整理了一个小示例程序:

  • 生成 6 个随机数,并将它们放在逗号分隔的字符串中
  • 加密数字序列
  • 将加密的数字序列附加到文件中 - 如果程序运行多次,则可以多次写入同一个文件
  • 读取加密文件 - 应该获取所有已写入的序列
  • 解密每个序列并打印出逗号分隔的字符串集合

这在第一次尝试时工作正常 - 即当第一个序列被写入空文件时 - 并且返回正确的数字序列。

当文件包含多个加密序列时,这会导致decrypt例程以BadPaddingException. 在这一点上我已经完成了一个步骤,每个byte[]要解密的(代表一个加密的序列)都是 128 个字节,所以它不像是不规则的字节数导致了这个问题。

我知道 RSA 不再是推荐的方法,但这是我必须了解的规范。我也知道有很多关于 RSA 和 BadPaddingException 的问题,但我还没有遇到过处理这个问题的问题。

我的示例代码如下:

如果有人能发现这有什么问题,我将不胜感激!

谢谢

0 投票
1 回答
138 浏览

java - 验证在 JavaCard 上签名的数据时出现 Java BadPaddingException

我正在用密码在 JavaCard 上签署一些数据,然后将其输出到文本文件中,将其读入 java 程序并尝试验证它。我不断收到 BadPaddingException。

我在我的 JavaCard 小程序上这样签名:

并像这样验证它(在我的 Java 程序上):

当使用带有“RSA”的 Cipher.getInstance 时,它​​默认为 RSA/ECB/RKPCS1Padding 不是吗?我被困在如何摆脱错误上。

编辑:为了清楚起见,更改加密和解密以签名和验证

0 投票
1 回答
122 浏览

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 我的全部要求

先感谢您!