CryptoAPI
Код:
CryptExportKey(KeyHandle,0,PUBLICKEYBLOB,0,@public_key,@public_key_size);
Всё проходит без ошибок (функция возвращает не нулевое значение). Затем в другой программе я шифрую текст секретным ключом. Ну тут всё проходит тоже нормально. И наконец в третьей программе я дешифрую текст открытым ключом из файла. Верней хочу дешифровать открытым. А не получается. Открытый ключ нормально импортируется:
Код:
CryptImportKey(rsa,public_key,public_key_size,0,0,@public_key_handle);
А вот дешифровка не проходит:
Код:
CryptDecrypt(public_key_handle,0,True,0,buffer,@buffer_size );
Возвращает ноль. GetLastError (а потом ещё и получение по коду строки с сообщением об ошибке средствами ОС) возвращает "Ключ не существует". А вот если вместо данных публичного ключа я помещаю данные пары публичного/секретного ключа, то дешифровка проходит нормально. Вопрос: как мне заставить CryptoAPI расшифровывать текст только по открытому ключу?
P. S.: Код выше может содержать ошибки, т. к. я на самом деле пишу все три программы на Ассемблере, а перевёл ключевые вызовы на Pascal только для удобства отвечающих.
PS про ASM - при использовании технологии средства второстепенны...
Цитата:
Может я чего-то не знаю и уже несколько лет пишу и делаю не то, но идея публичного/секретного ключа всегда использовалась наоборот - шифруется публичным а открывается секретным...
А если надо наоборот? Мне нужно что-то вроде цифровой подписи (но не совсем). То есть зашифровать могу только я, а дешифровать и проверить может каждый.
Цитата: KIV
А если надо наоборот? Мне нужно что-то вроде цифровой подписи (но не совсем). То есть зашифровать могу только я, а дешифровать и проверить может каждый.