2013-09-06 2 views
-1

я снабжал следующий RSA секретный ключ в формате.NET RSAKeyValue base64 закрытый ключ для одного base64 секретного ключа

<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. использование TIdDecoderMIME класса Инди для декодирования Base64 из MemoryStream
3. декодированного MemoryStream затем подается в функции CryptDecrypt из wcrypt2 .pas (а Делая обертка Cryptographic API от Microsoft) от джедаев

Я знаю, что решение для открытого ключа в том же формате

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

решения добавить «BgIAAACkAABSU0ExAAQAAAE» + Экспонент + M odulus

Результат: BgIAAACkAABSU0ExAAQAAAEAAQCxqiYKv0umaLdmrKPyBfYmAfzZYVsvsOJyS4c1lBPjqpn7zh + XyxPXK7MxJkAlenQJM33M + ZYfmlPLya7JWXXTPviylEEtlmul9GshpX2caxWu2YO9vNIHRZYYau4ccbkm95iMyJi8KN2ANtqDwiJv55vcXZDqjPSDE4ap49xmog ==

С закрытым ключом, как мы объединить его? Я знаю, что это начинается следующим образом:

"BwIAAACkAABSU0ExAAQAAAE" + Exponent + Modulus + ???????

+0

Какой бит вы застряли? –

+0

Я хочу, чтобы объединить все XXXX в RSAKeyValue к одному Base64, как это: BwIAAACkAABSU0EyAAQAAAEAAQBv6tBGUnT2KUcP4eHoxrsUNWOfB70LTX5UnImACuItbD6glLmvAx6ygDqvqSw691iWo5oMpH1QU6W40Dqpo ....... – user2732388

+0

Я знаю, первая часть, как добавить «BwIAAACkAABSU0ExAAQAAAE» + показатель + модуль. Но я не знаю, как добавить остальных. – user2732388

ответ

0

XXXX в XML-формате RSAKeyValue находится в base64, просто я не хочу раскрывать там детали. Я хочу знать, как объединить все коды baseX XXXX в один закрытый ключ base64.

Я подозреваю, что это означает, что вы выполняете кодировку base64 по строкам. Гораздо проще выполнить кодировку всего файла.

Например, вы можете сделать это следующим образом:

  1. Загрузите файл в TStringList.
  2. Извлечь единственную строку, представляющую файл, используя свойство Text списка строк.
  3. Base64 кодирует эту строку.
  4. Отправьте его по кабелю.
  5. На принимающей стороне декодируйте строку.
  6. Назначьте строку свойству Text строкового списка.
Смежные вопросы