java 中的错误填充异常(RSA 解密)

2023-12-13

在解密 java 中的 RSA Base64 编码字符串时,我遇到一些问题。RSA 加密字符串是由 c#.Net 生成的。

实际上,我使用java创建了公钥和私钥。然后我将公钥交换给.Net Team。他们使用公钥加密了一个字符串RSACryptoServiceProvider class.

.Net代码:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(keySize);
rsa.FromXmlString(publicKey);
.......
.......
byte[] encryptedBytes = rsa.Encrypt(tempBytes, false);
Array.Reverse(encryptedBytes);
stringBuilder.Append(Convert.ToBase64String(encryptedBytes));

Java解密代码:

   public static void doDecrypt( BigInteger  modules, BigInteger  d , String encrypted )
    {
            try {
                    byte[] decodedBytes = Base64.decodeBase64( encrypted );
                    KeyFactory factory = KeyFactory.getInstance("RSA");
                    Cipher cipher = Cipher.getInstance("RSA");

                    RSAPrivateKeySpec privSpec = new RSAPrivateKeySpec(modules, d);
                    PrivateKey privKey = factory.generatePrivate(privSpec);

                    cipher.init(Cipher.DECRYPT_MODE, privKey);
                    byte[] decrypted = cipher.doFinal(decodedBytes) ;
                    System.out.println("decrypted: " + new String(decrypted));
            }
            catch (Exception e) {
                    e.printStackTrace();
            }

    }

解密字符串时,它显示以下错误。

javax.crypto.BadPaddingException: Data must start with zero
   at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:308)
   at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:255)
   at com.sun.crypto.provider.RSACipher.a(DashoA13*..)
   at com.sun.crypto.provider.RSACipher.engineDoFinal(DashoA13*..)
   at javax.crypto.Cipher.doFinal(DashoA13*..)

然后,我尝试了

 Cipher cipher = Cipher.getInstance("RSA/ECB/NoPadding");

但是,它给出了垃圾字符,我无法将其与我想要的纯文本联系起来。 我想,我在某个地方缺少做某事。请指导我。


rsa.Encrypt(tempBytes, false)

导致 PKCS#1 v1.5 填充。所以你必须在java端使用相同的。尝试使用

Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

我认为 Windows API 默认使用 ECB,但您可能也想尝试其他模式,例如 CBC 或 CFB。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java 中的错误填充异常(RSA 解密) 的相关文章

  • 如何在 javadoc 中使用“<”和“>”而不进行格式化?

    如果我写
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • Google App Engine 如何预编译 Java?

    App Engine 对应用程序的 Java 字节码使用 预编译 过程 以增强应用程序在 Java 运行时环境中的性能 预编译代码的功能与原始字节码相同 有没有详细的信息这是做什么的 我在一个中找到了这个谷歌群组消息 http groups
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • Java列表的线程安全

    我有一个列表 它将在线程安全上下文或非线程安全上下文中使用 究竟会是哪一个 无法提前确定 在这种特殊情况下 每当列表进入非线程安全上下文时 我都会使用它来包装它 Collections synchronizedList 但如果不进入非线程安
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 捕获的图像分辨率太大

    我在做什么 我允许用户捕获图像 将其存储到 SD 卡中并上传到服务器 但捕获图像的分辨率为宽度 4608 像素和高度 2592 像素 现在我想要什么 如何在不影响质量的情况下获得小分辨率图像 例如我可以获取或设置捕获的图像分辨率为原始图像分
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • 如何修复 JNLP 应用程序中的“缺少代码库、权限和应用程序名称清单属性”?

    随着最近的 Java 更新 许多人都遇到了缺少 Java Web Start 应用程序的问题Codebase Permissions and Application name体现属性 尽管有资源可以帮助您完成此任务 但我找不到任何资源综合的
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 如何忽略 Java 应用程序外部的过期证书?

    我们有一个 Java 应用程序 需要忽略过期的自签名证书 但是我们无法修改代码来执行此操作 我想知道我们是否可以在启动时提供系统属性或环境变量 以便我们暂时忽略所有过期的证书 或者甚至更具体 并从外部提供我们希望过期的特定证书被忽略 有人有
  • nginx 中 PATH_INFO 的空值返回垃圾值

    当 nginx 设置的 PATH INFO 为空字符串时 我在从 PHP 访问它时收到一些垃圾字符 这就是我在 nginx 中设置 PATH INFO 的方法 fastcgi split path info php fastcgi para
  • Linux 的 Rijndael 替代方案

    我有一个在 C Windows 中使用 Rijndael 对象的项目 我应该用c Linux来写它 我知道我应该使用 openssl aes 但不知道如何使用 包括哪些内容 班级名称是什么 方法 我应该使用什么来代替 Rijndael cr
  • 从我的应用程序在 Whatsapp 上分享视频

    我想分享视频 我有该视频的链接 当用户想要分享该视频时 它会在应用程序中下载 现在视频未在 Whatsapp 上共享 我现在不知道如何 这是我的代码我尝试过但没有成功 Intent videoshare new Intent Intent
  • 如何处理视图模型中的 Slider.ValueChanged 事件?

    我有一个PlayerV xaml内部带有滑块的视图
  • JW Player 无法在 ie9 和 ie10 中播放 MP4 视频格式的视频

    我在我的网页中实现了 jwplayer 6player 我可以在 ie9 和 ie10 浏览器中的 jw 播放器中播放 mp3 文件 但我无法在两个浏览器中播放 MP4 文件 但在 ie8 中工作正常 下面是我使用的代码
  • 流畅的 JavaScript 动画

    这是一些代码
  • 如何在 Matlab 中选择子矩阵(不以任何特定模式)

    如何在Matlab中选择子矩阵 不是任何模式 例如 对于一个大小为10 10的矩阵 如何选择由第1 2 9行和第4 6列交集组成的子矩阵 感谢您提供任何有用的答案 TLDR 简答 至于你的问题 假设你有一个任意的 10 10 矩阵A 提取所
  • 当其他应用程序启动时,手电筒会关闭。安卓

    我正在使用 Widget 开发手电筒应用程序 当我在小部件手电筒打开的情况下打开手电筒时 当我启动某些应用程序时 手电筒会关闭 为什么会发生这种情况 为什么我的手电筒无法在后台运行 我怎样才能防止这种情况发生 我希望手电筒只能由用户而不是系
  • 如何在不共享敏感信息的情况下从github推送和拉取?污迹和清洁?

    当我从 github 拉取到服务器存储库时 我想避免覆盖某些文件中的本地化敏感信息 例如 config php 注意 它不是开源类型的存储库 我完全控制存储库 我是唯一的用户 它是私有的 但最重要的是 它基于一个开源框架 可能会改变配置文件
  • 在 VS 2010 C# 项目之间共享 .cs 文件

    我想知道两个独立的 C Windows 项目 在两个独立的解决方案中 是否可以共享一个具有共享定义的 cs 文件 如果是这样 那又如何呢 附言 第一个项目是 ASP NET Web 应用程序 第二个项目是 C Windows 服务 作为 W
  • display:none 是否仍使用渲染性能

    可以说我有这样的标记 div style display none div 浏览器是否仍然使用资源来加载 Flash 对象 或者是否会延迟到调用 javascript 来切换 Flash 对象 dislplay block 现在请记住 我不
  • .NET Core 2.1 HttpClient 不返回预期值

    我正在使用一个接口从这个 url 调用 apihttp localhost 55260 api Accounts GetList 这是控制器的引用 HttpGet Route GetList AllowAnonymous public Ac
  • 单击按钮即可删除/添加类

    我希望能够从 div 中删除一个类 并通过单击按钮添加另一个类 但我无法让它发挥作用 div class hiddennav displaynone ul ul div div class fixednav div class showna
  • 将 Dataframe 传递给 Apply 函数 pandas 作为参数

    可以将 DataFrame 传递给apply像这样的功能 df2 df1 apply func axis 1 args df2 def func df1 df2 do stuff in df2 for each row of df1 ret
  • 在 Athena Aws 中连接行值

    我有 2 个列 可以说 id 和值 我想连接按 id col 分组的值 例如 我有 ID值 1 个 1b 2个 2b 我需要输出为 ID值 1a b 2a b 您可以使用array agg随后是一个array join select id
  • 如何在 Flutter 中使用查询访问 Cloud Firestore 的数组索引?

    我有田地users在文档中 该字段包含数组中的两个元素 我必须检查该数组中的特定两个值 首先 我用了array contains为此方法两次 但出现错误 如何访问 Cloud Firestore 中数组字段的索引 下面的代码是我的方法 但它
  • 存在寄存器溢出机制时,为什么会因为寄存器使用过多而无法启动内核呢?

    1 内核什么时候开始将寄存器溢出到本地内存 2 当没有足够的寄存器时 CUDA运行时如何决定不启动内核并抛出太多资源请求错误 多少个寄存器足以启动内核 3 既然存在寄存器溢出机制 即使没有足够的寄存器 难道不应该启动所有CUDA内核吗 1
  • 将信号连接到插槽会立即导致信号被发射

    我正在用 python 3 3 3 和 pyqt5 编写一个程序 我已经连接了很多信号和插槽 没有任何问题 这导致了一个问题 我的代码如下 def populateVendorAndModelComboBoxes self vendorCo
  • java 中的错误填充异常(RSA 解密)

    在解密 java 中的 RSA Base64 编码字符串时 我遇到一些问题 RSA 加密字符串是由 c Net 生成的 实际上 我使用java创建了公钥和私钥 然后我将公钥交换给 Net Team 他们使用公钥加密了一个字符串RSACryp