C# 获取加密app.config的公钥和私钥

C# 获取加密app.config的公钥和私钥,c#,encryption,web-config,rsa,rsacryptoserviceprovider,C#,Encryption,Web Config,Rsa,Rsacryptoserviceprovider,我已经编写了一个程序来加密和解密app.config文件中的appdata。程序运行正常,因此我可以像这样加密app.config <configProtectedData> <providers> <add keyContainerName="MyConfigurationKey" description="Uses RsaCryptoServiceProvider to encrypt and decryp

我已经编写了一个程序来加密和解密
app.config
文件中的appdata。程序运行正常,因此我可以像这样加密
app.config

<configProtectedData>
        <providers>
          <add keyContainerName="MyConfigurationKey"
          description="Uses RsaCryptoServiceProvider to encrypt and decrypt"
          name="MyProtectedConfigurationprovider"
          type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </providers>
      </configProtectedData>
      <appSettings configProtectionProvider="MyRSAProtectedConfigurationprovider">
        <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
          xmlns="http://www.w3.org/2001/04/xmlenc#">
          <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
          <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
            <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
              <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
              <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
                <KeyName>Rsa Key</KeyName>
              </KeyInfo>
              <CipherData>
                <CipherValue> Some long text </CipherValue>
              </CipherData>
            </EncryptedKey>
          </KeyInfo>
          <CipherData>
            <CipherValue> very long text</CipherValue>
          </CipherData>
        </EncryptedData>
      </appSettings>

现在,我需要在加密中找到私钥和公钥。我找了好几个地方,但找不到有关它的适当文件。请在这方面帮助我。

我不确定您希望密钥采用的格式,但
密钥。结果包含您要查找的所有信息。元组模和指数是RSA公钥,元组模和D是私钥。从指数数据字段中可以看到,数字是base64编码的:AQAB是“\x01\x00\x01”的base64编码,这是常用的公共指数65537的编码。不过,我不知道它是小endian还是大endian。

你在搜索时发现了什么?为什么你发现的不适用于这里?您是否在MSDN中查找与加密相关的API?我使用以下问题的答案来完成此操作。我找到了如何导出,但是我找不到描述哪部分是私钥、哪部分是bublic密钥的文档。我在这里找到了答案。但我不确定它是否正确@parseids是否有可信的源代码描述this@Nayanna:任何关于RSA加密的教科书,例如。但对于实际用途,您始终需要将其转换为目标应用程序能够理解的格式。例如,x.509 PEM或DER格式与PGP密钥格式有很大不同。如果您能解释一下您打算用钥匙做什么,我们可能会提供更具体的帮助。非常感谢您的回答。我不熟悉加密技术。我需要在web场场景中加密app.config文件。我可以成功地做到这一点。但是我需要用我自己的密钥加密。所以我想导出密钥,编辑私钥和公钥,然后再次导入。这是一个好方法还是更好的方法。再次非常感谢。@Nayanna:您应该交换文件的全部内容,以加快解密速度。关于你的想法的安全影响,我真的说不出来,因为我不太清楚这种设置的威胁场景。也许您可以就这方面提出一个单独的问题,其中包含您想要保护哪些数据不受谁的影响,以及谁仍然需要访问这些数据。我相信服务器仍然需要读取配置才能启动应用程序?
<RSAKeyValue>
    <Modulus>Some text</Modulus>
    <Exponent>AQAB</Exponent>
    <P>Some text</P>
    <Q>Some text</Q>
<DP>Some text</DP>
<DQ>Some text</DQ>
<InverseQ>Some text</InverseQ>
<D>Some text</D>
</RSAKeyValue>