2011-07-26 76 views
1

我有關於OpenSSL和dotnet加密的問題。我想將由OpenSSL生成的RSA公鑰和私鑰轉換爲dotnet。這個鍵然後用於進一步的操作。出於安全原因,外部密鑰庫或密鑰文件的使用不是解決方案。我已經包含了我必須使用的舊cpp代碼的一小部分,並且標記了兩行,我認爲可以導出這些密鑰。 RSA密鑰結構來自外部PKI服務器。實際上,PKI服務器在發送消息時爲選定的用戶提供了一系列公鑰。每個用戶的私鑰始終存儲在本地。有人能幫助我嗎?OpenSSL(cpp)和.net RSA密鑰交換

非常感謝您的幫助

沃爾克

############## start code ############## 

typedef struct _KEY_POINT 
{ 
      unsigned short size; 
      unsigned short key_size; 
      unsigned long crc; 
      unsigned char key_data[1]; 
} KEY_POINT, * PKEY_POINT; 

unsigned char * encryptRSA(const unsigned char * pSrcBuffer, 
         unsigned long * pBufferSize, 
         const PKEY_POINT pPublicKey) 
{ 
RSA * pRsa = NULL; 
// -----snip ---------------- 
      unsigned char * pPublic_data = pPublicKey->key_data; 
      pRsa = d2i_RSAPublicKey(&pRsa, (const unsigned char **)&pPublic_data, pPublicKey->key_size); 
// Here chance to export *pRsa as .net public keye e.g. as string (base 64 encoded) 
// -----snip ---------------- 
} 

unsigned char * decryptRSA(const unsigned char * pSrcBuffer, 
         unsigned long * pBufferSize, 
         const PKEY_POINT pPrivateKey) 
{ 
RSA * pRsa = NULL; 
// -----snip ---------------- 
      unsigned char * pPublic_data = pPublicKey->key_data; 
      pRsa = d2i_RSAPrivateKey(&pRsa, (const unsigned char **)&pPublic_data, pPublicKey->key_size); 
// Here chance to export *pRsa as .net private key e.g. as string (base 64 encoded) 
// -----snip ---------------- 
} 

############## end code ############## 

回答