我生成了一个新的公钥/私钥对并将其导出为 XML 字符串:
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048);
string publicPrivateKey = RSA.ToXmlString(true);
publicPrivateKey 中的 XML 字符串如下所示(为了便于阅读,字符串被缩短):
<RSAKeyValue>
<Modulus>t6tLd1Wi7PEkwPfx9KGP1Ps/5F2saXnOsCE2U....</Modulus>
<Exponent>AQAB</Exponent>
<P>3LJ5y4Vla7cS3XgmbIH5dQgppUHa+aSWavEOCbDRS/M....</P>
<Q>1QyGIAnjv4YLcRVdwXtxWkijc+aZ496qIBZnCAUUD/E....</Q>
<DP>0821dc0f+LBKOqIEvj4+2kJrNV5ueQesFBYkEsjPFM....</DP>
<DQ>ugSzX2oDJwjdGKG1OOiVcmUWAm6IU4PpOxcUYtY8TC....</DQ>
<InverseQ>LDQIQu+LSB6CSZBrGxNQthWi9mkuPGVZyDDr....</InverseQ>
<D>qZm2bXKH8WwbsJ8ZlT3S1TbgUifppLrqSRkb8XqEcMv....</D>
</RSAKeyValue>
生成的公钥应该在其他应用程序(PHP/JavaScript/JAVA)中用于加密数据。以上 XML 的哪一部分定义了公钥/我必须将哪一部分发送给其他应用程序的开发者?
另一方面:什么定义了私钥/我必须存储哪些部分才能解密由我的公钥加密的数据?
最佳答案
指数和模数定义公钥。
如果您使用 RSA.ToXmlString
将其唯一参数 includePrivateParameters
设置为 false
,您只会看到格式
<RSAKeyValue>
<Modulus>…</Modulus>
<Exponent>…</Exponent>
</RSAKeyValue>
输出。
关于c# - C# : What part defines the public key? 中的 RSA 加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6636476/