获取加密的 app.config 的公钥和私钥
Posted
技术标签:
【中文标题】获取加密的 app.config 的公钥和私钥【英文标题】:Get public and private key of an encrypted app.config 【发布时间】:2014-11-10 08:34:28 【问题描述】:我编写了一个程序来加密和解密 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>
之后我导出了key.Result
这是这样的:
<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>
现在,我需要在加密中找到私钥和公钥。我搜索了几个地方,但找不到合适的文档。请帮我解决这个问题。
【问题讨论】:
您在搜索时发现了什么?为什么您发现的内容不适用于这里?您是否在 MSDN 中查找过与加密相关的 API? 我使用以下问题的答案来执行此操作。 social.msdn.microsoft.com/Forums/en-US/…我找到了如何导出,但是我找不到描述哪个部分是私钥,哪个部分是公钥的文档 我在这里找到了答案。但我不确定它是否正确***.com/questions/17693289/… 【参考方案1】:我不确定您希望密钥采用什么格式,但key.Result
包含您要查找的所有信息。元组 Modulus 和 Exponent 是公钥 RSA 密钥,元组 Modulus 和 D 是私钥。从Exponent数据字段中我可以看到,数字是base64编码的:AQAB是'\x01\x00\x01'的base64编码,这是一个常用的公共指数65537的编码。我不知道是否不过,它是小端或大端。
【讨论】:
@parseids 是否有任何可信来源描述此内容 @Nayanna:任何有关 RSA 的密码学教科书,例如Understanding Cryptography by Christof Paar and Jan Pelzl。但是对于实际用途,您始终需要将其转换为目标应用程序可以理解的格式。例如,x.509 PEM 或 DER 格式与 PGP 密钥格式有很大不同。如果您能解释一下您打算如何使用该密钥,我们或许可以提供更具体的帮助。 非常感谢您的回答。我是密码学新手。我需要在网络场场景中加密 app.config 文件。我可以成功地做到这一点。但后来我需要使用自己的密钥进行加密。所以我想导出密钥并编辑私钥和公钥并再次导入。这是一个好方法还是他们更好的方法。再次非常感谢。 @Nayanna:你应该交换文件的全部内容,afaikt 它还包含some derived values 以加快解密速度。关于您的想法对安全的影响,我真的不能说,因为我不太清楚这种设置的威胁场景。也许您可以就这方面提出一个单独的问题,其中包含您想要保护哪些数据不受谁以及谁仍然必须访问。我相信配置仍然需要服务器读取才能启动应用程序?以上是关于获取加密的 app.config 的公钥和私钥的主要内容,如果未能解决你的问题,请参考以下文章