将 Objective-C RSA 公钥导入到 c# RSACryptoServiceProvider 中

2024-01-27

这是我们使用以下库生成 RSA 对象的 Objective-C:https://github.com/kuapay/iOS-Certificate--Key--and-Trust-Sample-Project https://github.com/kuapay/iOS-Certificate--Key--and-Trust-Sample-Project

 BDRSACryptor *rsa  = [[BDRSACryptor alloc] init];
 BDRSACryptorKeyPair *RSAKeyPair = [rsa generateKeyPairWithKeyIdentifier:nil error:error];

然后我们通过RSAKeyPair.publicKey到我们的 C#,使用 BouncyCastles 库:

using (TextReader sr = new StringReader(pempublic))
{
   var pemReader = new PemReader(sr);
   var temp = (RsaKeyParameters)pemReader.ReadObject();

   var RSAKeyInfo = new RSAParameters
   {
      Modulus =  temp.Modulus.ToByteArray(),
      Exponent = temp.Exponent.ToByteArray()
   };

   var rsaEncryptor = new RSACryptoServiceProvider();
   rsaEncryptor.ImportParameters(RSAKeyInfo);
}

没有错误,但加密方式不同。同一个字符串在c#和obj-c中加密是不同的,我们无法一端加密另一端解密。

Help!

编辑:愿意考虑在 c# 和 obj-c 之间交换公钥的任何方法。这只是我们迄今为止最接近的一次。

编辑2:内容pempublic

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC/ugxekK+lY0VLeD8qA5nEhIn7IzBkgcrpiEM109chFxHobtvWEZbu8TqTIBtIgtISNp4idcEvahPniEyUawjmRSWB7uYmcHJ3pWaIo5/wBthmGrqS/XjedVXT6RuzaoPf9t0YXyW6YiH1kQZn4gjZF51O6iIk2+VnfkYVqeKBtQIDAQAB-----END PUBLIC KEY-----

Edit3:关于填充:C#和obj-c都使用OEAP填充。

Edit4:文本如何加密:c#

 byte[] testBytes = Encoding.UTF8.GetBytes("1234567890");
 byte[] encryptedBytes = rsaEncryptor.Encrypt(testBytes, true);
 string base64 = Convert.ToBase64String(encryptedBytes);

obj-c

NSString *encrypted = [rsa encrypt:@"1234567890" key:RSAKeyPair.publicKey error:error];

最终编辑:

通过在.NET服务器上使用Chilkat加密库来解决。现在,我们可以从 .NET、Java 或 Objective-C 客户端生成的 XML 和 PEM 格式的公钥加载 RSA 加密器。如果有人能解释为什么 .NET RSACryptoServiceProvider 不起作用,我们都很好奇。


请检查我对自己问题的回答使用公钥进行 RSA C# 加密,与 PHP openssl_private_decrypt() 一起使用:Chilkat、BouncyCastle、RSACryptoServiceProvider https://stackoverflow.com/questions/20709764/rsa-c-sharp-encryption-with-public-key-to-use-with-php-openssl-private-decrypt/20716312#20716312

我认为这可能有帮助

为了简短起见,请尝试使用 temp.Modulus.ToByteArrayUnsigned()

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

将 Objective-C RSA 公钥导入到 c# RSACryptoServiceProvider 中 的相关文章

随机推荐

  • Travis 尝试将应用提交到 Google Play 商店时出错

    我首先研究了在 Github 上找到的几个要点 https gist github com lpetre 87a5196d14cf4484f1f2 https gist github com lpetre 87a5196d14cf4484f
  • sphinx4 中的语音识别响应很差

    目前我们正在研究使用 sphinx4 进行语音识别 我们正在努力为听写类型应用程序取得良好的响应 输入是一个 wav 文件 我们希望转录它 我研究了 Sphinx4 提供的 LatticeDemo 和 Transscriber 演示 当我使
  • SBT:依赖其他SBT项目而不发布

    我有一组松散相关的组件 其中一些组件依赖于其他组件 为了具体起见 我们假设我们有组件 common a 和 b common 没有任何依赖项 但所有其他项目都使用 common 此外 a 依赖于 b 所有组件都是用 Scala 编写的 我想
  • 为什么 MVC 在 GET 上使用 Modelstate 而不是提供的模型

    当 MVC 运行时ActionMethod它将填充ModelState字典并使用ModelBinder建立ActionMethod参数 如果有 它对两者都这样做GET and POST 这是有道理的 之后ActionMethod已成功运行
  • JPA 与 HIBERNATE 插入非常慢

    我正在尝试使用 JAP 和 HIBERNATE 将一些数据插入 SQL Server 2008 R2 除了速度非常慢之外 一切都 有效 要插入 20000 行 大约需要 45 秒 而 C 脚本大约需要不到 1 秒 有这个领域的资深人士可以提
  • 针对可怕的 While (True) 循环的最佳重构

    如果您像我一样在 While True 循环处颤抖 那么您一定也已经认真思考了重构它的最佳方法 我见过几种不同的实现 没有一个真正比其他实现更好 例如计时器和委托组合 那么 您想出或看到的重构可怕的 While True 循环的最佳方法是什
  • 使用 LINQ 时“输入字符串的格式不正确”

    我正在尝试做一个FirstOrDefault 查询对象集并抛出一个奇怪的异常 My Code private RecordObject GetRecordByID int recID return objectSet FirstOrDefa
  • 如果特定列中的值不是 pandas 数据框中的整数,则删除行

    如果我有一个数据框并且想要删除其中一列中的值不是整数的任何行 我该怎么做 另一种方法是 如果值不在 0 2 范围内 则删除行 但由于我不确定如何执行其中任何一个操作 我希望有人可以这样做 这是我尝试过的 但没有成功 不知道为什么 df df
  • 为什么 Windows API 中的所有内容都是类型定义的?

    更具体地说 为什么是同一件事typedef在很多情况下都有多个不同的名称 为什么typedef指针类型 有时会模糊逻辑 例如 typedef const WCHAR LPCWSTR PCWSTR 这有什么意义呢 实际上这里发生了一些不同的事
  • 如何使用 gpg 命令行检查密码是否正确

    我正在尝试使用自动化备份duplicity 但是当我测试结果时 我得到 gpg 公钥解密失败 密码错误 我想检查我使用的密码是否实际上是与相应 gpg 密钥关联的密码 但无论如何我在 gpg 命令行选项中都看不到 不要加密或解密任何内容 只
  • 如何使用动态键名解析 JSON?

    我有一个像这样的 JSON 响应 array object1 aa somevalue1 bb somevalue2 cc somevalue3 object2 aa somevalue4 bb somevalue5 cc somevalu
  • Program 类应该是静态的吗? [复制]

    这个问题在这里已经有答案了 创建新的 ASP NET Core 3 项目后 我在 Visual Studio 2019 中收到以下警告 警告 CA1052 类型 Program 是静态持有者类型 但既不是静态的也不是不可继承的 public
  • Android 从媒体播放器中删除快进和快退按钮

    我想从 Android 的媒体控制器中删除快进和快退按钮 谁能帮我这个 我想在我的主要活动中完成它 创建 MediaController 时 请确保将布尔值设置为false在构造函数中 MediaController mediaContro
  • 使用 AppCompatActivity 时 onCreate() 处显示错误

    我将 SDK 更新到 22 Android 5 1 1 然后我使用AppCompactActivity代替Activity 这是 logcat 输出 04 23 13 51 40 524 E AndroidRuntime 3150 java
  • HTML 电子邮件的行高在 Outlook 2010 中不起作用

    Outlook 2010 Outlook 2007 似乎不支持我的 HTML 电子邮件中的行高 在 Outlook 00 和 Outlook 03 中完美运行 我一直在进行一些广泛的谷歌搜索 我发现 HTML CSS 支持图表表明 Outl
  • 使用Camera2(Android版本21)API录制60fps视频

    我正在尝试在 Camera2 android hardware camera2 API 上以 60 或更高 fps 的速率录制视频 最后 我使用以下命令成功以 120fps 进行录制相机约束高速捕获会话 https developer an
  • 使用模拟退火进行图形着色

    我正在尝试使用模拟退火提出图形着色问题的算法 网上有通用算法 但是当我查看它时 我无法理解如何将这个算法应用于这个问题 图中的每个节点必须具有与其邻居不同的颜色 我该如何使用模拟退火算法来实现这一点 这个问题中的 温度 时间表 是什么 请帮
  • Visual Studio 从 UML 图生成代码?

    我正在研究使用 Visual Studio 2015 从 UML 图生成代码 根据我所做的工作 我在生成代码之前创建了用例 活动 序列和类图 当我生成代码时 我发现 Visual Studio 在生成代码时仅引用我的类图 所以我的问题是 V
  • 我们如何使用旧语法进行 LEFT JOIN ?

    我们如何使用旧语法进行 LEFT JOIN 假设您有一个 User 表和 UserRole 表 并且您在 User 表中保存了 UserRole 的 ID 以下是检索所有用户名以及具有新表示法的角色名称的查询 SELECT U Userna
  • 将 Objective-C RSA 公钥导入到 c# RSACryptoServiceProvider 中

    这是我们使用以下库生成 RSA 对象的 Objective C https github com kuapay iOS Certificate Key and Trust Sample Project https github com ku