Я кодировал свое приложение (Windows UI in .NET) в английской языковой системе. У меня есть настройки для шифрования / дешифрования данных, которые я сделал с помощью WinCrypto API в VC ++, ссылался на эту DLL в моем приложении .NET. Эта настройка хорошо работает в английской локали и не работает в японской версии.
Мне не удалось найти проблему в VC ++, пока я использую Unicode для этой цели.
Я получаю исключение в методе CryptDecrypt()
. Возвращает 0
при работе в японской версии.
bRet = CryptDecrypt( hKey, 0, TRUE, 0, pbTargetBuffer, &dwCryptDataLen );
Эта функция работает на английском языке.
Что-то, что я пропустил с первого взгляда?
Обновление : bRet равен 0
, а значение GetLastError()
равно 2148073477
. Угадай свои плохие данные. Но я не уверен в исправлении моих данных. Он показывает различные символы (в коде C ++), хотя я передал правильные символы из C #.
Вот как я определил свою функцию в C ++:
__declspec(dllexport) int DoDecryption( LPCTSTR chEncryptedData_i,
LPCTSTR chPassword_i,
unsigned char chDecryptedData_o[] )
{
// ...
}
Я пробовал char*
, а также wchar_t*
вместо LPCTSTR
.