Статус: Новичок
Группы: Участники
Зарегистрирован: 26.09.2011(UTC) Сообщений: 4
|
Добрый день. Вопрос по CryptoAPI. Никак не пойму, как это работает. Последовательно вызывал CryptAcquireContext CryptCreateHash CryptHashData CryptSignHash На последнем была ошибка (возвращ. ноль). Номер ошибки GetLastError показывал что-то на ключ. Где-то писали, что нужно CryptGenKey. Стал вызывать его после CryptAcquireContext - и CryptSignHash уже не ругается на ошибку. Однако вот что странно. Когда я потом убрал CryptGenKey, то программа все равно работала - но только на той системе, где я хотя бы раз запускал с CryptGenKey. И даже после перезагрузки так. Такое ощущение, что CryptGenKey где-то зарегистрировала в системе, что нужно генерировать для этого ключа. Удивительно. Ну, и в принципе эта генерация не нужна. Ведь получается, что я потом буду получать каждый раз разный хеш, так ведь? Или ключ каждый раз разный, а хеш будет все равно как надо? У меня RSA-SHA1. Буду очень благодарен за любую помощь. :) Отредактировано пользователем 26 сентября 2011 г. 19:59:39(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
А какую задачу Вы решаете? Это операция подписи, а не хеширования, и для нее действительно необходим закрытый ключ. Цитата:Когда я потом убрал CryptGenKey, то программа все равно работала - но только на той системе, где я хотя бы раз запускал с CryptGenKey. И даже после перезагрузки так. Такое ощущение, что CryptGenKey где-то зарегистрировала в системе, что нужно генерировать для этого ключа. Удивительно. CryptGenKey создал ключ, а потом в CryptAcquireContext Вы каждый раз к нему обращались. |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 26.09.2011(UTC) Сообщений: 4
|
Кирилл, спасибо за ответ. Kirill Sobolev написал:А какую задачу Вы решаете? Я... наверное перепутал. :) Мне нужен не хеш, а сигнатура, а для нее нужен ключ. Причем он у меня вроде есть) Я так понимаю, я должен использовать CryptExportKey? Kirill Sobolev написал:CryptGenKey создал ключ, а потом в CryptAcquireContext Вы каждый раз к нему обращались. Т.е. даже то, что я перекомпилировал программу (без CryptGenKey) - это не влияет? Ключ как-то остается в системе? Точнее не один ключ, а каждый раз генерируется новый. Я вот не пойму - каким образом. В программе, в которой уже нет CryptGenKey.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:Причем он у меня вроде есть) Я так понимаю, я должен использовать CryptExportKey? Зависит от того где он есть, но не CryptExportKey, а CryptImportKey скорее. Цитата:Ключ как-то остается в системе? Точнее не один ключ, а каждый раз генерируется новый. Я вот не пойму - каким образом. Грубо говоря, он сохранен на жестком диске. |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 26.09.2011(UTC) Сообщений: 4
|
Kirill Sobolev написал: Зависит от того где он есть, но не CryptExportKey, а CryptImportKey скорее.
Да, действительно. :) Kirill Sobolev написал: Грубо говоря, он сохранен на жестком диске.
Но получается, что не он сохранен, а его "генерация". Результат ведь каждый раз разный. Получается, теперь он всегда будет для этой программы генерировать? Или вообще для всех? Но все равно это как-то странно. Один раз скомпилировал и выполнил с CryptGenKey и получаешь "пожизненную" генерацию. И уже сколько бы ты раз не перекомпилировал без CryptGenKey и не запускал программу - на этой системе он будет генерироваться. Я не вижу в этом смысла
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
Цитата:Результат ведь каждый раз разный. Результат чего? |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 26.09.2011(UTC) Сообщений: 4
|
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,733  Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
А хэш получается одинаковый? Как вызываются CryptAcquireContext и CryptGenKey? |
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close