在 Android 中解密从 .net 生成的 RSA 加密值

2024-04-25

我在这里浏览了很多帖子,但没有找到正确的解决方案。我想从 Android 解密在 c# .net 中加密的值。

我已使用以下代码片段在.net平台中成功解密

public static void Main()
{
    string _privateKey = Base64Decode("myprivatekey");

     var rsa = new RSACryptoServiceProvider();
       string data = "198,47,144,175,154,47,194,175,242,41,212,150,220,177,198,161,236,36,197,62,18,111,21,244,232,245,90,234,195,169,141,195,139,199,131,163,26,124,246,50,102,229,73,148,18,110,170,145,112,237,23,123,226,135,158,206,71,116,9,219,56,96,140,19,180,192,80,29,63,160,43,127,204,135,155,67,46,160,225,12,85,161,107,214,104,218,6,220,252,73,252,92,152,235,214,126,245,126,129,150,49,68,162,120,237,246,27,25,45,225,106,201,251,128,243,213,250,172,26,28,176,219,198,194,7,202,34,210";
        var dataArray = data.Split(new char[] { ',' });
        byte[] dataByte = new byte[dataArray.Length];
        for (int i = 0; i < dataArray.Length; i++)
        {
            dataByte[i] = Convert.ToByte(dataArray[i]);
        }

        rsa.FromXmlString(_privateKey);
        var decryptedByte = rsa.Decrypt(dataByte, false);
        Console.WriteLine(_encoder.GetString(decryptedByte));       
}

现在我想在 Android 应用程序中执行相同的过程。请问有人可以指导我完成这个吗? 我尝试过以下代码,但它抛出javax.crypto.IllegalBlockSizeException: input must be under 128 bytes例外

        String modulusString = "hm2oRCtP6usJKYpq7o1K20uUuL11j5xRrbV4FCQhn/JeXLT21laKK9901P69YUS3bLo64x8G1PkCfRtjbbZCIaa1Ci/BCQX8nF2kZVfrPyzcmeAkq4wsDthuZ+jPInknzUI3TQPAzdj6gim97E731i6WP0MHFqW6ODeQ6Dsp8pc=";
        String publicExponentString = "AQAB";

        byte[] modulusBytes = Base64.decode(modulusString, DEFAULT);
        byte[] exponentBytes = Base64.decode(publicExponentString, DEFAULT);
        BigInteger modulus = new BigInteger(1, modulusBytes);
        BigInteger publicExponent = new BigInteger(1, exponentBytes);

        RSAPrivateKeySpec rsaPubKey = new RSAPrivateKeySpec(modulus, publicExponent);
        KeyFactory fact = KeyFactory.getInstance("RSA");
        PrivateKey pubKey = fact.generatePrivate(rsaPubKey);
        Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1PADDING");
        cipher.init(Cipher.ENCRYPT_MODE, pubKey);

        byte[] plainBytes = result.getBytes("UTF-16LE");
        byte[] cipherData = cipher.doFinal(plainBytes);
        String encryptedStringBase64 = Base64.decode(cipherData, DEFAULT).toString();

None

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

在 Android 中解密从 .net 生成的 RSA 加密值 的相关文章

随机推荐

  • 应该是 WebAPI 还是 asmx

    我应该为我的两个简单 API 使用 ASMX 服务还是 ASP NET Web API 我想在我的 ASP NET MVC 项目中创建两个简单的 API 一个接受 3 个参数 currentUserID DataType ActionNam
  • C# 中的类型与强类型

    在 C 中 有什么理由说强类型与只是typed 当有人说类型化类时 我想到的是对象以外的某种类型 除了 object 之外 几乎所有内容都是用 C 编写的 一旦定义了一个不是对象的类 该类就是一种类型 不再从那里输入它 顺便说一句 这不是关
  • 为什么两个字符串文字相加不使用operator+?

    编辑 我已经重新格式化了帖子以使其更加清晰 为什么这有效 struct A struct B B A void operator const B const B int main A a1 a2 a1 a2 而这不 struct B B c
  • 排序数组中的最小成本路径

    给定一个排序数组A e g 4 9 10 11 19 搬家费用i gt j is abs A j A i 从给定元素开始 例如10 找出成本最低的路径 而无需两次访问同一元素 所以在这个例子中解决方案是10 gt 9 gt 4 gt 11
  • 将图像裁剪或遮罩成圆形

    使用 ImageMagick 或 GD 库将图像裁剪或遮罩成圆形形状的最佳方法是什么 请注意 解决方案存在于 其他 问答网站上 但不存在于 StackOverflow 上 这是使用 ImageMagick 的一种方法 无需使用遮罩即可实现此
  • Python 中的归一化互相关

    最近几天我一直在努力计算两对向量 x和y 的自由度 参考Chelton 1983 它是 根据 Chelton 1983 的自由度 https i stack imgur com O0DqE png 我找不到使用 np correlate 计
  • 像随机关卡生成一样自由流动,只有一种可能的解决方案?

    我已经实现了在这个问题中标记为正确答案的算法 流畅类游戏随机关卡制作用什么 https stackoverflow com questions 12926111 what to use for flow free like game ran
  • 在 Uvicorn/FastAPI 内发出下游 Https 请求的正确方法是什么?

    我有一个 API 端点 FastAPI Uvicorn 除此之外 它还向另一个 API 请求信息 当我使用多个并发请求加载 API 时 我开始收到以下错误 h11 util LocalProtocolError can t handle e
  • 如何在创建后将 VB.NET DataTable 列定义为主键

    我正在使用 VB NET dataAdapter 从 Oracle 数据库导入表 我使用 fill 命令将导入的数据添加到数据集中 在 DataTable 已填充数据后 如何将 DataTable 的特定列定义为 PrimaryKey 只要
  • 灵活地将新数据附加到 yaml 文件

    我有不同的 yaml 文件 它们可能具有不同的嵌套结构 文件1 yaml test3 service1 name1 somedata name2 somedata 文件2 yaml test1 app1 app2 somedata app7
  • 在远程服务器上执行 rake 任务

    生产环境的物理架构包括多台执行不同作业 rake 任务 的机器 所有这些机器都在同一个数据库上 其中一项工作将完成大量工作UPDATE如果其他作业正在运行 则通常会返回 postgres 死锁的表 我已经有一个 rake 任务来正常停止其他
  • 如何对字符串进行拼写检查?

    有人知道 C 多语言拼写检查库吗 我不需要实时拼写检查 仅检查字符串 thanks 就其价值而言 这是谷歌上的第一个点击 SpellCheck http msdn microsoft com en us library system win
  • 如何在本地闭包中调用非逃逸闭包? [复制]

    这个问题在这里已经有答案了 我有一个看起来像这样的函数 func test closure gt let localClosure closure localClosure 这只是一个例子 并不能完全反映我遇到的问题 显然在这里我可以直接打
  • 类型错误:“str”对象无法使用 input() 调用[重复]

    这个问题在这里已经有答案了 我有以下代码 它应该询问用户 2 文件名 我在第二个函数中的 input 中遇到错误 但在第一个函数中没有 我不明白 这是错误 输出 getOutputFile 文件 splitRAW py 第 22 行 位于
  • Keras:嵌入 LSTM

    在 LSTM 的 keras 示例中 用于对 IMDB 序列数据进行建模 https github com fchollet keras blob master examples imdb lstm py https github com
  • Azure 静态 Web 应用程序和 Azure Blob 存储静态网站有什么区别?

    有什么区别Azure Blob 存储静态网站 https learn microsoft com en us azure storage blobs storage blob static website host and Azure 静态
  • Spring boot 启动慢

    这是一个奇怪的问题 我们正在使用带有集成 tomcat 的 Spring Boot Web 应用程序 在我的本地 Mac 上 应用程序启动很快 几秒钟 在装有 Centos 7 的 google 机器上 启动速度非常慢 大约 2 分钟 应用
  • Swiftlint 覆盖与 SPM 相关的项目设置

    我遇到了 swiftlint 自动更正的奇怪行为 我的项目使用通过 SPM 导入的库 但是当我运行 linter 时 它会更改如下设置 B4621A7323D0A90F00545ADE LibraryName in Frameworks i
  • 解决合并冲突后 Git rebase 陷入困境

    我正在运行一个遇到冲突的变基 git rebase master First rewinding head to replay your work on top of it Applying Better SelectMotifsView
  • 在 Android 中解密从 .net 生成的 RSA 加密值

    我在这里浏览了很多帖子 但没有找到正确的解决方案 我想从 Android 解密在 c net 中加密的值 我已使用以下代码片段在 net平台中成功解密 public static void Main string privateKey Ba