CryptoApi
От: valsos Латвия  
Дата: 06.01.10 08:35
Оценка:
Помогите разобраться. Функция CryptDecrypt на сервере Win2k работает правильно.
На сервере Windows 2003 данные из файла декодирует правильно, а данные из MSSQL не декодируются, хотя считываются из таблицы правильно.
CryptDecrypt выдает ошибку 0x80090005
visual studio
Re: CryptoApi
От: De-Bugger  
Дата: 09.01.10 17:25
Оценка:
Здравствуйте, valsos, Вы писали:

V>Помогите разобраться. Функция CryptDecrypt на сервере Win2k работает правильно.

V>На сервере Windows 2003 данные из файла декодирует правильно, а данные из MSSQL не декодируются, хотя считываются из таблицы правильно.
V>CryptDecrypt выдает ошибку 0x80090005

Какой указываете провайдер при инициализации CryptoApi?
Re[2]: CryptoApi
От: valsos Латвия  
Дата: 11.01.10 06:50
Оценка:
Здравствуйте, De-Bugger, Вы писали:

DB>Здравствуйте, valsos, Вы писали:


V>>Помогите разобраться. Функция CryptDecrypt на сервере Win2k работает правильно.

V>>На сервере Windows 2003 данные из файла декодирует правильно, а данные из MSSQL не декодируются, хотя считываются из таблицы правильно.
V>>CryptDecrypt выдает ошибку 0x80090005

DB>Какой указываете провайдер при инициализации CryptoApi?


Здравствуйте, De-Bugger. Спасибо за письмо.
Проблема была мною решена.
Я использовал провайдер Microsoft Enhanced Cryptographic Provider v1.0, который в Windows Server 2000 bcgjkmpetn 40 битный ключ, а в Windows Server 2003 — 128 бит. При создании ключа я применил следующий код и все заработало:

#define ID_KEYLEN_WIN2000 40

...
DWORD dw = 0;

DWORD dwEffectiveKeyLen = ID_KEYLEN_WIN2000;
if ( ! CryptSetKeyParam(m_hPwdKey, KP_EFFECTIVE_KEYLEN, (BYTE *)&dwEffectiveKeyLen, 0) )
{
dw = GetLastError();
m_sError = FormatError(dw, "Error CryptSetKeyParam");
return dw;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.