.net - 在 .NET 中仅使用几个值解密 RSA 数据

标签 .net cryptography rsa

我正在使用 RSA from this webpage 的 Javascript 实现,我已经在那里生成了我的 key 对。因此,我有 p , q ,公共(public)指数,公共(public)模,私有(private)指数和私有(private)逆。

如何使用 .NET 的 RSACryptoServiceProvider只用这些值解密密文? .NET 文档列出了其他三个字段; DP , DQInverseQ我不确定如何提供。

最佳答案

RSA 私钥有两种表示形式(参见 PKCS#1)。

第一个表示由对 (n, d) 组成,第二个表示由五元组 (p, q, dP, dQ, qInv) 组成。公钥表示为 (n, e)。

  • n 是公共(public)模数
  • p 和 q 是两个素数
  • d 是私有(private)指数
  • e 是公共(public)指数
  • dP 是 p 的中国剩余定理系数 ( e · dP ≡ 1 (mod (p – 1)) )
  • dQ 是 q 的 CRT 系数 ( e · dQ ≡ 1 (mod (q – 1)) )
  • qInv 是一个 CRT 系数,一个小于 p 的正整数,使得
    q · qInv ≡ 1 (mod p)

  • 两个私钥表示中的每一个都是“完整的”,即您只需要其中一个就可以执行 RSA 计算。由于您拥有第一个表示所需的一切,因此只需在您的 RSAParameters 上设置这些参数(即 n、p、q、e、d)就足够了。实例并省略其余部分。

    关于.net - 在 .NET 中仅使用几个值解密 RSA 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6761091/

    相关文章:

    .net - 部署工具 ENTERPRISE - 什么是最适合 Windows 环境的工具?

    java - 为什么我的服务器 (Go) 无法解密客户端 (Java) 消息?

    javascript - 切换到不同的加密库

    ssl - Cipher(rsa-with-aes-128-cbc-sha) 将使用哪个 SHA?

    c# - 如何减轻在 C# 中初始化列表字典的痛苦?

    c# - 枚举所有没有 mscoree 的 AppDomains

    java - 在java中使用rsa加密和解密大文件

    encryption - DSA 和 RSA 有什么区别?

    java - 无法从 x509 证书中提取公钥

    .net - 将 exe 引用为 .NET 程序集并使用 ClickOnce 进行部署