我提供了以下 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
中解码 Base643. 解码的 MemoryStream 然后从 Jedi 的 wcrypt2.pas(Microsoft Cryptographic API 的 delphi 包装器)输入到 CryptDecrypt 函数中
我知道相同格式的公钥的解决方案
<RSAKeyValue>
<Modulus>xqiYKv0umaLdmrKPyBfYmAfzZYVsvsOJyS4c1lBPjqpn7zh+XyxPXK7MxJkAlenQJM33M+ZYfmlPLya7JWXXTPviylEEtlmul9GshpX2caxWu2YO9vNIHRZYYau4ccbkm95iMyJi8KN2ANtqDwiJv55vcXZDqjPSDE4ap49xmog==</Modulus>
<Exponent>AAQC</Exponent>
</RSAKeyValue>
解决方案是添加"BgIAAACkAABSU0ExAAQAAAE"+指数+模数
结果是: BgIAAACkAABSU0ExAAQAAAEAAQCxqiYKv0umaLdmrKPyBfYmAfzZYVsvsOJyS4c1lBPjqpn7zh+XyxPXK7MxJkAlenQJM33M+ZYfmlPLya7JWXXTPviylEEtlmul9GshpX2caxWu2YO9vNIHRZYYau4ccbkm95iMyJi8KN2ANtqDwiJv55vcXZDqjPSDE4ap49xmog==
使用私钥,我们如何组合它?我知道它是这样开始的:
"BwIAAACkAABSU0ExAAQAAAE" + 指数 + 模数 + ???????
RSAKeyValue XML 中的 XXXX 位于 base64 中,只是我不想在那里公开细节。我想知道如何将所有 XXXX base64 代码合并为一个 base64 私钥。
我怀疑这意味着您正在逐行执行 base64 编码。对整个文件执行编码要简单得多。
例如,您可以按如下方式执行此操作:
- 将文件加载到
TStringList
中。 - 使用字符串列表的
Text
属性提取表示文件的单个字符串。 - Base64 对该字符串进行编码。
- 通过电汇发送。
- 在接收端,解码字符串。
- 将字符串分配给字符串列表的
Text
属性。