Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline DemDA  
#1 Оставлено : 31 июля 2015 г. 6:36:28(UTC)
DemDA

Статус: Участник

Группы: Участники
Зарегистрирован: 12.09.2013(UTC)
Сообщений: 20

Сказал(а) «Спасибо»: 4 раз
Здравствуйте, уважаемые профи! Еще раз прошу прощения, но как новичок в использовании криптоалгаритмов опять прошу помощи. Стоит задача: реализовать шифрование по ГОСТ используя сертификат получателя. Сделал код.

var

pStreamData: TMemoryStream;
MessageArray: array of Pbyte;
SizeArray: array of DWORD;
SizeBuff, SizeBuf1: DWORD;
cert : PCCERT_CONTEXT;
hCertPubKey: HCRYPTKEY;
phProv: HCRYPTPROV;
my: hcertstore;
begin
pStreamData:=TMemoryStream.Create;
try
my := CertOpenSystemStore(0, 'MY');
cert:= CryptUIDlgSelectCertificateFromStore(my, 0, 'Óêàæèòå ñåðòèôèêàò äëÿ øèôðîâàíèÿ', '', 0, 0, nil);
if cert = nil then
begin
CertFreeCertificateContext (cert);
showmessage ('Íå âûáðàí ñåðòèôèêàò');
Exit;
end;
if not CryptAcquireContext(phProv, nil, 'Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider', 75,CRYPT_VERIFYCONTEXT) then begin
showmessage ('Íå óäàëîñü ïîëó÷èòü êîíòåêñò êðèïòîïðîâàéäåðà');
Exit;
end;
if not CryptImportPublicKeyInfo(phProv,PKCS_7_ASN_ENCODING or X509_ASN_ENCODING, @cert.pCertInfo.SubjectPublicKeyInfo,hCertPubKey)
then showmessage('Íå óäàëîñü ïîëó÷èòü êëþ÷');
pStreamData.LoadFromFile('d:\sc.txt');
SetLength(MessageArray, 1);
SetLength(SizeArray, 1);
MessageArray[0] := pStreamData.Memory;
SizeArray[0] := pStreamData.Size;
if CryptEncrypt(hCertPubKey,0,true,0, nil,SizeBuff, SizeArray[0]) then
if CryptEncrypt(hCertPubKey,0,true,0, MessageArray[0],SizeBuf1, SizeBuff) then
Begin
pStreamData.SaveToFile('d:\sc.txt.enc');
showmessage ('Åñòü');
end else showmessage (SysErrorMessage(GetLastError))
else showmessage (SysErrorMessage(GetLastError));
finally
CertFreeCertificateContext (cert);
pStreamData.Free;

end;
end;
Функция CryptEncrypt возвращает false showmessage (SysErrorMessage(GetLastError)) - Указан неправильный алгоритм. Часы напряжений, поисков, изучений навели меня на следующий вывод:
CryptEncrypt использовать для таких целей нельзя. Тупик. Может есть мысли.
Спасибо.
Offline DemDA  
#2 Оставлено : 31 июля 2015 г. 6:54:38(UTC)
DemDA

Статус: Участник

Группы: Участники
Зарегистрирован: 12.09.2013(UTC)
Сообщений: 20

Сказал(а) «Спасибо»: 4 раз
Допускаю, что не в том направлении двигаюсь....
Offline Андрей Писарев  
#3 Оставлено : 31 июля 2015 г. 7:29:56(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,181
Мужчина
Российская Федерация

Сказал «Спасибо»: 620 раз
Поблагодарили: 2396 раз в 1885 постах
Ключевые слова в поиске на форуме, SDK от КРИПТО-ПРО и MSDN:

CMSG_ENVELOPED_ENCODE_INFO
CRYPT_ALGORITHM_IDENTIFIER
CMSG_STREAM_INFO


CryptMsgOpenToEncode
CryptMsgUpdate

Техническую поддержку оказываем тут
Наша база знаний
Offline Boris@Serezhkin.com  
#4 Оставлено : 2 августа 2015 г. 10:56:11(UTC)
Boris@Serezhkin.com

Статус: Активный участник

Группы: Участники
Зарегистрирован: 26.08.2010(UTC)
Сообщений: 259
Откуда: Moscow

Сказал(а) «Спасибо»: 4 раз
Поблагодарили: 11 раз в 10 постах
Автор: DemDA Перейти к цитате
Допускаю, что не в том направлении двигаюсь....

Все правильно, надо идти к светлому будущему...Boo hoo!

Увидел упоминание Дельфи и решил поделиться.
В свое время я написал класс реализующий подписи и шифрование
Уж два года прошло...
Вот архивчик.
Обрати внимание на t_bsCrypt.doc - описалка класса
и T_Sasha.dpr это тест для класса.
Надеюсь нужные описания функций от Jedy найдешь.
forPeaple.rar (52kb) загружен 42 раз(а).

ЗЫ, т.е PS:
t_bsCrypt нам практически не пригодился.Eh?
Все VB6, PowerBuilder. Сейчас еще и Шарп.
А проект на Дельфи обошелся без крипто средств...
Но я гордюсь тем, что t_bsCrypt может сотворить Detached подпись
на смеси RSA и ГОСТ сертификатов...Dancing

Отредактировано пользователем 2 августа 2015 г. 11:51:42(UTC)  | Причина: Добавил "ЗЫ"

thanks 2 пользователей поблагодарили Boris@Serezhkin.com за этот пост.
DemDA оставлено 03.08.2015(UTC), vadim.pavlov оставлено 03.08.2015(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.