21.12.2005 16:41:56 | CryptSignHash выдает разные значения при неизменном Hashe | | Ответов: 12 |
|
Александр | | |
|
Использую функцию CryptSignHash на хеше сгенерированном по ГОСТ ("1.2.643.2.2.9").
В результате каждый раз получаю разные значения подписи при одинаковой исходной информации!!!
На RSA-шном сертификате значение одинаковое.
В чем тут может быть проблемма?
|
|
Ответы:
|
21.12.2005 17:17:33 | Александр |
|
Там добарляется случайное число, читайте ГОСТ на подпись |
|
21.12.2005 17:39:58 | Александр |
|
А как этого избежать? |
|
21.12.2005 17:50:32 | Александр |
|
Насколько я помню это требует ГОСТ. И следовательно этого избежать никак нельзя!
а зачем вам это нужно?
|
|
22.12.2005 9:30:12 | Александр |
|
Хочется сделать по общеизвестному имени пароль, используя сертификат. |
|
22.12.2005 10:53:54 | Александр |
|
Смысл делать это, если имя общеизвестное и каждый сможет войти использую его? |
|
22.12.2005 11:03:10 | Александр |
|
Так если бы мы зашифровали имя закрытым ключем сертификата, тогда в принципе никто не сможет получить такой же пароль не зная этого ключа. |
|
22.12.2005 11:26:23 | Kirill Sobolev |
|
Не очень понятна схема. Если "зашифровать имя закрытым ключем сертификата" (через CryptSignHash я так понимаю), то любой, знающий ОК сможет его расшифровать.
Возможно, Вам надо сделать наоборот - шифровать окрытым ключем? Тогда CryptSignHash непричем, использовать нужно CryptEncrypt |
|
22.12.2005 11:28:25 | Александр |
|
Честно говоря, я смутно представляю эту систему =)
Пусть пользователь вводит просто пароль и всё. |
|
22.12.2005 11:32:17 | Александр |
|
Ну и что, что каждый сможет из пароля получить имя пользователя. Главное, что зная имя пользователя никто другой кроме владельца сертификата не может получить пароль!!! |
|
22.12.2005 11:43:24 | Kirill Sobolev |
|
А нельзя сделать так: пользователь в качестве пароля вводит общеизвестное имя, подписанное секретным ключем. А Вы в качестве проверки проверяете его (CryptVerifyHash) ОК пользователя. Такая схема даже предпочтительнее, т.к. пароль в явном виде нигде хранится не будет. |
|
22.12.2005 11:51:35 | Александр |
|
Это я только что и хотел предложить =) |
|
22.12.2005 11:59:08 | Александр |
|
К сожалению такая схемя не подходит. Сейчас пытаюсь обойти с другой стороны: при помощи связки
CryptDeriveKey
CryptSetKeyParam
CryptGetUserKey
CryptExportKey
Но пока не получается сделать экспорт ключа. Возвращает NTE_BAD_KEY_STATE, несмотря на то, что при вызове CryptDeriveKey использовался флаг CRYPT_EXPORTABLE |
|