Самый простой способ расшифровать файлы, зашифрованные PGP, из VBA (MS Access)

StackOverflow https://stackoverflow.com/questions/139046

Вопрос

Мне нужно написать код, который получает файлы, зашифрованные в PGP, из расположения FTP и обрабатывает их.Файлы будут зашифрованы с помощью моего открытого ключа (хотя у меня его пока нет).Очевидно, что мне нужна библиотека PGP, которую я могу использовать из Microsoft Access.Можете ли вы порекомендовать что-нибудь простое в использовании?

Я ищу что-то, что не требует огромных знаний PKI.В идеале, что-то, что легко сгенерирует одноразовую пару закрытого / открытого ключей, а затем будет иметь простую процедуру расшифровки.

Это было полезно?

Решение

Решение из командной строки - это хорошо.Если ваша база данных является внутренним приложением, не подлежащим распространению, я могу порекомендовать Защита конфиденциальности Gnu.Этот инструмент на основе командной строки позволит вам делать все, что вам нужно, в соответствии со стандартом OpenPGP.

В Access вы можете использовать команду Shell() в макросе, подобном этому:

Public Sub DecryptFile(ByVal FileName As String)
  Dim strCommand As String
  strCommand = "C:\Program Files\GNU\GnuPG\gpg.exe " _
  & "--batch --passphrase ""My PassPhrase that I used""" & FileName
  Shell strCommand, vbNormalFocus
End Sub

При этом будет запущен инструмент командной строки для расшифровки файла.Этот синтаксис использует текстовую версию вашей секретной фразы-пароля.Это не самое безопасное решение, но оно приемлемо, если ваша база данных является внутренней и используется только доверенным персоналом.GnuPG поддерживает другие методы защиты ключевой фразы.

Другие советы

В PGP есть опция командной строки для расшифровки файлов.

У нас есть пакетный файл, который выполняет расшифровку, передавая имя файла для расшифровки:

Пакетный файл:

"C:\Program Files\Network Associates\PGPNT\pgp" +FORCE %1 -z *password* 

Затем мы вызываем это из VBS:

  Command = "decrypt.bat """ & FolderName & FileName & """"

  'Executes the command script.
  Set objShell = WScript.CreateObject ("WSCript.shell")
  Command = "cmd /c " & Command
  objShell.run Command, 1, True

Надеюсь, это укажет вам полезное направление.

Вы можете использовать OpenPGPBlackbox (версия ActiveX) для этого

Стю...Однажды мне пришлось написать "Защищенный SMTP"-сервер на Java...Самый простой и быстрый способ сделать это - загрузить и / или приобрести PGP.У них есть SDK, который вы можете использовать для доступа ко всему, что захотите.

Мне пришлось бы вернуться и посмотреть, нужно ли мне писать COM-оболочку, или она у них уже есть.(Я написал этот SMTP-сервер около 10 лет назад).В любом случае, не отчаивайтесь.Около 5 лет назад я написал целое приложение на основе PGP (основанное на OpenPGP RFC) на C ++, но загвоздка была в том, что я был НЕТ разрешено использовать любые существующие библиотеки.Так что мне пришлось писать все это самому.И я использовал GPG, OpenPGP и PGP для тестирования и т.д....

Итак, я мог бы даже оказать вам помощь в том, как расшифровать этот материал в VBA.Это не невозможно (это может быть чертовски медленно, но не невозможно), и я НЕ из тех, кто "раскошеливается" и запускает материал cmdline, чтобы выполнить подобную работу за вас, поскольку это подвергнет вас некоторым СЕРЬЕЗНЫМ рискам безопасности, поскольку предложение hurcane (например) приведет к отображению вашей ключевой фразы в таких инструментах, как ProcExp).Первый шаг - это изучение того, как работает PKE и т.д.Затем перечислите шаги, которые вам нужно сделать, чтобы получить то, что вы хотите.

Это то, с чем мне было бы интересно помочь, поскольку я всегда из тех, кто пишет код, который, по всеобщему мнению, невозможно выполнить.:) Кроме того, у меня есть исходный код приложения, которое я написал, из-за слияний, закрытий и т.д...

Изначально она была написана для нефтегазовой промышленности, поэтому я знаю, что она безопасна.Это не значит, что у меня нет Любой в коде есть недостатки в безопасности, но я думаю, что он стабилен.Я знаю, что у меня проблема с моим китайским кодом остатка..По какой-то причине, когда я использую этот короткий путь, я не могу правильно декодировать данные, но если я использую RSA "длинный путь", это работает...

Это приложение так и не было полностью завершено, поэтому я не поддерживаю такие вещи, как пары ключей DSA, но я поддерживаю пары ключей RSA с SHA1, MD5, используя IDEA, AES, (I ПОДУМАЙ мой код 3DES работает некорректно, но, возможно, с тех пор я это исправил).Я еще не реализовал сжатие и т.д...Но мне бы хотелось иметь повод вернуться и снова поработать над этим кодом.

Я / МОГ БЫ / создать для вас COM-объект, который вы могли бы вызывать из VBA, передавая исходные данные Base64 вместе с ключевыми данными Base64 (или указателем на ключевой файл на диске) и парольную фразу для декодирования файлов....

Подумай об этом...Дай мне знать..

На протяжении многих лет я собирал код VBScript для выполнения таких вещей, как MD5, SHA1, IDEA и других криптопрограмм, но я их не писал.Черт возьми, вы, вероятно, могли бы просто взаимодействовать с Microsoft CryptoAPI и разбивать каждое действие на его основные части и при этом заставлять его работать.(Вы не найдете вызова Micosoft CryptoAPI типа "DecryptPGP()"...Все это нужно было бы делать по частям).

Дай мне знать, если я смогу помочь.

Я бы поискал средство шифрования / дешифрования командной строки и просто вызвал exe-файл из вашего приложения Access с нужными параметрами.

Насколько я знаю, в VBA нет PGP-шифровальщика / дешифровальщика.

Я не знаком с VBA для Access, но я думаю, что лучшим решением (возможно, самым простым) было бы запустить внешнюю утилиту PGP командной строки.

Существует библиотека DLL, которую вы можете вызвать непосредственно из вашего приложения VBA, не обращаясь к внешней программе: КриптоКС.У PGP также есть библиотека DLL, которую вы можете вызвать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top