Asp.net core 如何在.NETCore中使用RSA

Asp.net core 如何在.NETCore中使用RSA,asp.net-core,asp.net-core-mvc,.net-core,Asp.net Core,Asp.net Core Mvc,.net Core,我尝试使用RSA对文件进行加密,但它没有toXmlString()和fromXmlString方法。如何在.net core中使用RSA类? 我想用私钥加密,用公钥解密,这样其他人只能读取此文件,但无法生成此文件,可能吗?目前使用纯.net core时,您得到的信息较少: 最后,这意味着您现在可以在.NETCore上构建,并期望 更多功能稍后点亮,因此随着时间的推移,事情会变得越来越容易 继续。你是否想成为一个早期采用者用更少的 特色框架现在,,或在以后添加更多功能时加入 添加了,第三方生态系统

我尝试使用RSA对文件进行加密,但它没有
toXmlString()
fromXmlString
方法。如何在.net core中使用RSA类?
我想用私钥加密,用公钥解密,这样其他人只能读取此文件,但无法生成此文件,可能吗?

目前使用纯.net core时,您得到的信息较少:

最后,这意味着您现在可以在.NETCore上构建,并期望 更多功能稍后点亮,因此随着时间的推移,事情会变得越来越容易 继续。你是否想成为一个早期采用者用更少的 特色框架现在,或在以后添加更多功能时加入 添加了,第三方生态系统已经迎头赶上,将成为 (艰难的)决定,我们都必须由你自己做出

如果您以.NETCore中的完整.NETFramework为目标,那么它们将可用

{
  "version": "1.0.0-*",

  "dependencies": {
    "NETStandard.Library": "1.6.0"
  },

  "frameworks": {
    "net461": {}
  }
}
它们将不适用于以下情况,例如:

"frameworks": {
    "netcoreapp1.0": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  },

虽然
ToXmlString
FromXmlString
方法不可用,
ImportParameters(rsapameters)
ExportParameters(bool)
不可用

如果您有需要继续读取的现有XML格式的值,则键的XML格式不是很有趣:

仅限公众:

<RSAKeyValue>
  <Modulus>[base64-encoded value]</Modulus>
  <Exponent>[base64-encoded value]</Exponent>
</RSAKeyValue>

[base64编码值]
[base64编码值]
公共+私人:

<RSAKeyValue>
  <Modulus>[base64-encoded value]</Modulus>
  <Exponent>[base64-encoded value]</Exponent>
  <P>[base64-encoded value]</P>
  <Q>[base64-encoded value]</Q>
  <DP>[base64-encoded value]</DP>
  <DQ>[base64-encoded value]</DQ>
  <InverseQ>[base64-encoded value]</InverseQ>
</RSAKeyValue>

[base64编码值]
[base64编码值]

[base64编码值]

[base64编码值] [base64编码值] [base64编码值] [base64编码值]
(其中,每个命名的XML元素映射到
rsapameters
struct上同名的字段)


否则,您可以/应该使用最适合您和您的应用程序的任何序列化机制。

您不能使用其他可用的方法吗?我在网上找到的所有示例都使用
fromXmlString
方法。你能告诉我另一种方法吗?你可以使用这样一个扩展:我用
exportParameters
ImportParameters
创建我自己的
ToXMlString
exportParameters
,它工作正常,但不能使用私钥加密,也不能使用公钥解密,有什么建议吗?@John私钥可以加密,因为它有公钥,但是公钥不能解密。使用私钥来证明真实性称为签名,因此您可能需要SignData和VerifyData,而不是加密和解密。您可能意识到我想要编写一个许可证文件,该许可证是一个加密的xml文件(二进制格式),包含一些必要的信息。我的应用程序需要这些信息来启动和执行某些操作。所以我真的需要加密和解密,目前我使用AES加密该文件,但如果有人反编译我的应用程序,他们将获得AES密钥,这样他们就可以轻松生成他们想要的任何许可证。这偏离了原来的问题,也许你需要一个新的许可证。许可证文件通常不加密,而是经过签名。{License:{User:John,Serial:123456789},Signature:(binary/base64 blob)}。然后构建二进制形式的许可证(例如UTF-8 User concat Serial)并调用rsaPublic.VerifyData(数据、许可证.Signature,…)。但是.NET(核心或框架)不允许私有加密+公共解密,RSA签名除外。