Как отключить шифрование, выполняемое Wincrypt API

Я хочу отключить шифрование, которое зашифровано в Wincrypt API.
Пожалуйста, дайте мне предложения, как это сделать, также приветствуются общие предложения
Ниже приведены примеры кода из EncryptedMessage.cpp:

EncryptedMessage Encrypt( TextMessage& Msg, const KeyBlob& RecipientExchangeKeyBlob )
throw( CCryptoEngine::Exception )
{
CryptProvider CryptProvider = GetCryptoProvider();
CryptKey SessionKey = CreateSessionKey( CryptProvider );
CryptKey RecipientExchangeKey = ImportExchangeKey( CryptProvider,
RecipientExchangeKeyBlob );
KeyBlob SessionKeyBlob = CreateSessionKeyBlob( SessionKey, RecipientExchangeKey );
if( ! CryptEncrypt( SessionKey, 0, TRUE, 0,
Msg.Text(), &Msg.Size(), Msg.Capacity() ) )
throw CCryptoEngine::Exception( ResourceString( IDS_CREN_MSG_ENC_FAILED ) +
GetErrorMessageFromCode( GetLastError() ) );

KeyBlob SignatureBlob; //Empty signature
return EncryptedMessage( SessionKeyBlob, Msg, SignatureBlob );
}

Полезный код, снятый с другого класса Ниже:

CCryptoEngine::CryptProvider CCryptoEngine::
GetCryptoProvider()
throw( CCryptoEngine::Exception )
{
if( ! CryptProviderAllocator::IsAllocated( m_RSACryptProvider ) )
{
if( ! CryptAcquireContext( &m_RSACryptProvider, _T("CollabWorx SIM Client"),
MS_ENHANCED_PROV, PROV_RSA_FULL, 0 ) )
if( ! CryptAcquireContext( &m_RSACryptProvider, _T("CollabWorx SIM Client"),
MS_ENHANCED_PROV, PROV_RSA_FULL, CRYPT_NEWKEYSET ) )
if( ! CryptAcquireContext( &m_RSACryptProvider, NULL, MS_ENHANCED_PROV,
PROV_RSA_FULL, CRYPT_NEWKEYSET | CRYPT_VERIFYCONTEXT ) )
throw CCryptoEngine::Exception(
"Your system may lack the required security capabilities.\n""Please make sure that Microsoft High Encryption Pack (128-bit strength) ""is installed in your system.\n\nInformation for the support:\n"+ GetErrorMessageFromCode( GetLastError() ) );

g_RSACryptProvider = m_RSACryptProvider;
}
return m_RSACryptProvider;
}

-3

Решение

Если вы хотите расшифровать зашифрованное сообщение, вы должны использовать CryptDecrypt функция.

Смотрите документ MSDN:
https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&л = EN-US&K = K (Wincrypt% 2FCryptDecrypt); к (CryptDecrypt); к (DevLang-С% 2B% 2B); к (TargetOS-Windows)&е = верно

Исходя из вашего кода, вы должны использовать тот же SessionKey как тот, который используется в методе Encrypt для расшифровки зашифрованного сообщения.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]