.NET RSAKeyValue base64私钥到单个base64私钥

时间:2013-09-06 09:40:44

标签: delphi cryptoapi

我以

格式提供了以下RSA私钥
<RSAKeyValue>
   <Modulus>XXXXXXXX</Modulus>
   <Exponent>XXXXXXXX</Exponent>
   <P>XXXXXXXX</P>
   <Q>XXXXXXXX</Q>
   <DP>XXXXXXXX</DP>
   <DQ>XXXXXXXX</DQ>
   <InverseQ>XXXXXXXXXX/InverseQ>
   <D>XXXXXXXX</D>
</RSAKeyValue>

XXXX采用Base64格式。

我想知道如何将所有XXXXXX位组合成单个Base64字符串 使用此单个Base64字符串,我执行以下操作:
1.将其送入TMemorStream
2.使用Indy的TIdDecoderMIME类从MemoryStream解码Base64 3.解码后的MemoryStream随后从Jedi的wcrypt2.pas(Microsoft的Cryptographic API的delphi包装器)提供给CryptDecrypt函数

我知道相同格式的公钥解决方案

<RSAKeyValue>
<Modulus>xqiYKv0umaLdmrKPyBfYmAfzZYVsvsOJyS4c1lBPjqpn7zh+XyxPXK7MxJkAlenQJM33M+ZYfmlPLya7JWXXTPviylEEtlmul9GshpX2caxWu2YO9vNIHRZYYau4ccbkm95iMyJi8KN2ANtqDwiJv55vcXZDqjPSDE4ap49xmog==</Modulus>
<Exponent>AAQC</Exponent>
</RSAKeyValue>

解决方案是添加“BgIAAACkAABSU0ExAAQAAAE”+指数+模数

结果是:     BgIAAACkAABSU0ExAAQAAAEAAQCxqiYKv0umaLdmrKPyBfYmAfzZYVsvsOJyS4c1lBPjqpn7zh + XyxPXK7MxJkAlenQJM33M + ZYfmlPLya7JWXXTPviylEEtlmul9GshpX2caxWu2YO9vNIHRZYYau4ccbkm95iMyJi8KN2ANtqDwiJv55vcXZDqjPSDE4ap49xmog ==

使用私钥我们如何组合它?我知道它是这样开始的:

“BwIAAACkAABSU0ExAAQAAAE”+指数+模数+ ???????

1 个答案:

答案 0 :(得分:0)

  

RSAKeyValue XML中的XXXX在base64中,只是我不想在那里公开细节。我想知道如何将所有XXXX base64代码组合到一个base64私钥中。

我怀疑这意味着你要逐行执行base64编码。在整个文件上执行编码要简单得多。

例如,您可以按如下方式执行此操作:

  1. 将文件加载到TStringList
  2. 使用字符串列表的Text属性提取表示文件的单个字符串。
  3. Base64编码该字符串。
  4. 通过电汇发送。
  5. 在接收端,解码字符串。
  6. 将字符串分配给字符串列表的Text属性。