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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline DemDA  
#1 Оставлено : 4 августа 2015 г. 6:03:06(UTC)
DemDA

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

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

Сказал(а) «Спасибо»: 4 раз
Здравствуйте. Имеется файл зашифрованный при помощи функции CryptEncryptMessage. Данный файл расшифровывается спокойно VipNet Cryptofile, КриптоАРМ, причем с использованием разных провайдеров. Не желает расшифровывать его только Такском Криптолайн (плохие данные).
Есть код расшифровки.
Код:

procedure TForm1.Button9Click(Sender: TObject);
var
  cbDecryptedMessage : DWORD;
  my : HCERTSTORE; //?????????
  enctype : cardinal; //?????? ??????
  hProv : HCRYPTPROV;
  DecryptParams : CRYPT_DECRYPT_MESSAGE_PARA;
  DecryptParamsSize : DWORD;
  memstr, pStreamOut: TMemoryStream;
  MessageSize: DWORD;
  MessageOutSize : DWORD;
  ppXchgCert : PCCERT_CONTEXT;
  MessageArrayOut : PByte;
  pSignerCert: PCCERT_CONTEXT;
  hProv1: HCRYPTPROV;
  pSignerName: PWideChar;
  pdwKeySpec : DWORD;
  sdf:string;
begin
 my := CertOpenSystemStore(0, 'MY');
  FillChar(DecryptParams, SizeOf(CRYPT_DECRYPT_MESSAGE_PARA), #0);
  DecryptParamsSize := SizeOf(CRYPT_DECRYPT_MESSAGE_PARA);
  ZeroMemory( @DecryptParams, SizeOf( CRYPT_DECRYPT_MESSAGE_PARA ));
  DecryptParams.cbSize := DecryptParamsSize;
  DecryptParams.dwMsgAndCertEncodingType := PKCS_7_ASN_ENCODING or X509_ASN_ENCODING;
  DecryptParams.rghCertStore := @my;
  DecryptParams.cCertStore := 1;

  memstr := TMemoryStream.Create;
  memstr.LoadFromFile(spc2);
  MessageSize := memstr.Size;

  pStreamOut := TMemoryStream.Create;

  if not CryptDecryptMessage(
    @DecryptParams,
    memstr.Memory,
    MessageSize,
    nil,
    @MessageOutSize,
    nil)
    then
  begin
    Showmessage('Îøèáêà1: ' + inttostr(getlasterror));
    Exit;
  end;
 pStreamOut.SetSize(MessageOutSize);
 //Showmessage(inttostr(MessageOutSize));
 //tMem(MessageArrayOut, MessageOutSize);
  if not CryptDecryptMessage(
    @DecryptParams,
     memstr.Memory,
    MessageSize,
    pStreamOut.Memory,
    @MessageOutSize,
    nil)
    then
  begin
    Showmessage('Îøèáêà2: ' + inttostr(getlasterror));
    Exit;
  end
  else
  begin
    pStreamOut.SetSize(MessageOutSize);
    pStreamOut.SaveToFile( makeout(spc2));
    Showmessage('Ðàñøèôðîâàí');
  end;
  FreeAndNil(memstr);
  FreeAndNil(pStreamOut);
  CertCloseStore( my, CERT_CLOSE_STORE_CHECK_FLAG );
  spc2:='';
  label5.Caption:='';
  label5.Refresh;
  button9.Enabled:=false;


end;

Такая странность: после второго прогона CryptDecryptMessage - функция, при работе с КриптоПРО 3.6 R3 возвращает ошибку (NTE_BAD_DATA). НО при работе с ViPNet CSP 4 расшифрование происходит нормально.
Заметил странность после первого прогона (при ошибке) размер будующего расшифрованного сообщения= истинный размер + 6 байт. Если есть мысли подскажите.
Offline DemDA  
#2 Оставлено : 4 августа 2015 г. 6:04:23(UTC)
DemDA

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

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

Сказал(а) «Спасибо»: 4 раз
Простите ошибся. После первого прогона возвращается неправильное количество байт.
Offline Андрей Писарев  
#3 Оставлено : 4 августа 2015 г. 7:36:13(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Автор: DemDA Перейти к цитате
Простите ошибся. После первого прогона возвращается неправильное количество байт.


Вопрос в чем?
Почему код не работает на одном ПК с двумя СКЗИ?
Техническую поддержку оказываем тут
Наша база знаний
Offline DemDA  
#4 Оставлено : 4 августа 2015 г. 8:04:15(UTC)
DemDA

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

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

Сказал(а) «Спасибо»: 4 раз
Не в этом дело. Код работает прекрасно при РАСШИФРОВКЕ с использованием VipNET CSP. При расшифровке с использованием КриптоПРО CSP выскакивает ошибка плохие данные. Такая же ошибка выскакивает при попытке расшифровать файл ПО ТАКСКОМ КРИПТОЛАЙН. КриптоАРМ и Випнет криптофайл расшифровывают нормально. Больше того: код по расшифровке прекрасно работает на другой машине. Неужели дело в том, что два СКЗИ установлены?
Offline Андрей Писарев  
#5 Оставлено : 4 августа 2015 г. 8:11:38(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Автор: DemDA Перейти к цитате
Не в этом дело. Код работает прекрасно при РАСШИФРОВКЕ с использованием VipNET CSP. При расшифровке с использованием КриптоПРО CSP выскакивает ошибка плохие данные. Такая же ошибка выскакивает при попытке расшифровать файл ПО ТАКСКОМ КРИПТОЛАЙН. КриптоАРМ и Випнет криптофайл расшифровывают нормально. Больше того: код по расшифровке прекрасно работает на другой машине. Неужели дело в том, что два СКЗИ установлены?


Applause

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#6 Оставлено : 4 августа 2015 г. 8:12:40(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
в 4х версиях КриптоПРО (не 3.х) и ViPNet - должно работать, проверь.
Техническую поддержку оказываем тут
Наша база знаний
Offline DemDA  
#7 Оставлено : 4 августа 2015 г. 8:17:26(UTC)
DemDA

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

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

Сказал(а) «Спасибо»: 4 раз
То есть при использовании КриптоПРО 4 и Випнет 4? А почему тогда КриптоАРМ и Випнет Криптофайл расшифровывают? А такском криптолайн нет? И плюс ко всему в випнете ЦСП убрана настройка "Включить поддержку работы через MS CryptoAPI". Но все равно работает.
Offline DemDA  
#8 Оставлено : 4 августа 2015 г. 8:19:03(UTC)
DemDA

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

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

Сказал(а) «Спасибо»: 4 раз
Прошу простить за возможно глупые вопросы, но я новичек.
Offline Андрей Писарев  
#9 Оставлено : 4 августа 2015 г. 8:33:00(UTC)
Андрей *

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

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

Сказал «Спасибо»: 621 раз
Поблагодарили: 2397 раз в 1886 постах
Автор: DemDA Перейти к цитате
То есть при использовании КриптоПРО 4 и Випнет 4? А почему тогда КриптоАРМ и Випнет Криптофайл расшифровывают? А такском криптолайн нет? И плюс ко всему в випнете ЦСП убрана настройка "Включить поддержку работы через MS CryptoAPI". Но все равно работает.


Этой проблеме уже как 5 лет, с момента выхода ViPNet CSP.

Варианты:
а) использовать для тестирования разные ПК с одним СКЗИ.
б) использовать последние версии.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
DemDA оставлено 04.08.2015(UTC)
Offline DemDA  
#10 Оставлено : 4 августа 2015 г. 8:39:53(UTC)
DemDA

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

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

Сказал(а) «Спасибо»: 4 раз
Андрей, прошу простить. Последний вопрос. Почему все прекрасно работает в случае с Випнет криптофайл и КриптоАРМ. Даже на машине с двумя СКЗИ? И только ТАКСКОМ КРИПТОЛАЙН выдает такую же проблему.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.