22.10.2005 11:48:57Преобразование ключа Ответов: 2
DimaP
В CSP CryptoPro 3.0 есть сессионный ключ для CALG_G28147 (не важно как он создан). В нем установлен KP_MIXMODE в TRUE.
Вопрос следующий - после того как вызвали:
memcpy(&bData, &bDataCopy, 2000);
pdwDataLen = 2000;
CPEncrypt(
hProv,
hKey,
0,
TRUE,
0,
&bData,
&dwDataLen,
2000 + 8
);
pdwDataLen = 2000;
CPEncrypt(
hProv,
hKey,
0,
TRUE,
0,
&bDataCopy,
&dwDataLen,
2000 + 8
);
будут ли равны по содержанию bData и bDataCopy?
 
Ответы:
24.10.2005 10:43:18Василий
Зависит от значения KP_MODE. Для режимов с обратной связью (в т.ч. по умолчанию - CRYPT_MODE_CFB) после использования ключа меняется синхровектор ключа, и результат следующего зашифрования будет другим.
24.10.2005 16:30:33DimaP
То есть при режиме ECB (простой замены) все же будет одинаковый результат?

Если да, то очень странно, что после того как произошло изменение ключа (KP_MIXMODE = TRUE и зашифрованно более 1024) и шифрование финальное (параметр BOOL Final = TRUE), сам ключ возвращается в первоначальное состояние, а его синхропосылка нет.

Если я не ошибаюсь, то и в режиме простой замены при KP_MIXMODE = TRUE ключ тоже модифицируется после шифрования каждого 1024 байтного блока. При этом в изменении ключа участвует и его синхропосылка (хотя в режиме простой замены она и не используется). Тогда приведенный мной участок, при условии вашего ответа (синхропосылка не возвращается в первоначальное состояние), будет давать разные результаты bData и bDataCopy.