Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 从VBA(MS Access)解密PGP加密文件的最简单方法_Security_Ms Access_Encryption_Pgp - Fatal编程技术网

Security 从VBA(MS Access)解密PGP加密文件的最简单方法

Security 从VBA(MS Access)解密PGP加密文件的最简单方法,security,ms-access,encryption,pgp,Security,Ms Access,Encryption,Pgp,我需要编写代码,从FTP位置拾取PGP加密文件并对其进行处理。这些文件将用我的公钥加密(我还没有公钥)。显然,我需要一个PGP库,可以在Microsoft Access中使用。你能推荐一个容易使用的吗 我正在寻找一些不需要大量PKI知识的东西。理想情况下,可以轻松生成一次性私钥/公钥对,然后有一个简单的解密例程。我会寻找一个命令行加密程序/解密程序,然后使用正确的参数从Access应用程序中调用exe 据我所知,VBA中没有PGP加密/解密程序。我不熟悉VBA的访问,但我认为最好的解决方案(可能

我需要编写代码,从FTP位置拾取PGP加密文件并对其进行处理。这些文件将用我的公钥加密(我还没有公钥)。显然,我需要一个PGP库,可以在Microsoft Access中使用。你能推荐一个容易使用的吗


我正在寻找一些不需要大量PKI知识的东西。理想情况下,可以轻松生成一次性私钥/公钥对,然后有一个简单的解密例程。

我会寻找一个命令行加密程序/解密程序,然后使用正确的参数从Access应用程序中调用exe


据我所知,VBA中没有PGP加密/解密程序。

我不熟悉VBA的访问,但我认为最好的解决方案(可能最简单)是运行外部命令行PGP实用程序。

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

希望这为您指明了一个有用的方向。

有一个DLL,您可以直接从VBA应用程序调用,而无需跨外部程序:。PGP还有一个可以调用的DLL。

命令行解决方案很好。如果您的数据库是内部应用程序,不需要重新分发,我可以推荐。这个基于命令行的工具将允许您执行与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支持其他技术来保护密码短语。

Stu。。。我曾经不得不用Java编写一个“安全SMTP”服务器。。。最简单、最快捷的方法是下载和/或购买PGP。他们有一个SDK,你可以用它访问任何你想要的东西

我必须回去看看我是否必须写一个COM包装器,或者他们是否已经有了一个。(我大约10年前写过这个SMTP服务器)。无论如何,不要气馁。大约5年前,我在C++中编写了一个基于PGP的应用程序(基于OpenPGP RFC),但捕获的是,我不允许使用任何现有的库。所以我不得不自己写这些东西。而且,我使用GPG、OpenPGP和PGP进行测试等等

所以,我甚至可以在如何用VBA解码这些东西方面为您提供帮助。这不是不可能的,(可能会很慢,但也不是不可能的),我不是那种“掏钱并运行cmdline来为您完成这样的工作的人,因为这会让您面临一些严重的安全风险,正如hurcane的建议(例如)将使您的密码短语显示在ProcExp等工具上)。第一步是学习PKE如何工作,等等。然后,您需要执行哪些步骤才能获得所需的内容

这是我有兴趣帮助的事情,因为我总是一个写代码的人,每个人都说不能做的。:)另外,我拥有我写的应用程序的源代码,因为合并,关闭等

它最初是为石油和天然气行业编写的,所以我知道它是安全的。这并不是说我的代码中没有任何安全缺陷,但我认为它是稳定的。我知道我的中文剩余Threory代码有问题。出于某种原因,当我使用该快捷方式时,我无法正确解码数据,但如果我使用RSA“很长一段路”“它起作用了

现在,这个应用程序还没有完全完成,所以我不支持DSA密钥对,但我支持RSA密钥对,使用SHA1,MD5,使用IDEA,AES(我认为我的3DES代码不能正常工作,但我可能已经修复了)。我还没有实现压缩,等等。。。但是,我想找个理由回去重新编写这段代码

我/可以/使您成为一个COM对象,您可以从VBA调用该对象,并将原始的Base64数据、Base64密钥数据(或指向磁盘上密钥文件的指针)和用于解码文件的密码短语一起传入

想想看。。。让我知道

多年来,我收集了vbScript代码,用于执行MD5、SHA1、IDEA和其他加密例程,但我没有编写它们。见鬼,你可能只需要与微软的CryptoAPI接口,并将每个操作分解为其核心部分,然后继续工作。(您将找不到像“DecryptPGP()”这样的Micosoft CryptoAPI调用……这一切都必须分块完成)


让我知道我是否能提供帮助。

您可以使用它来执行此操作。

这存在需要在Access中调用SHELL的问题,它将异步运行。在这种情况下,您可以使用Access Web中的ShellAndWait代码。要以同步方式而不是异步方式运行此代码(如上代码所述),请尝试ShellAndWait:。生成密钥对大约是PKE中90%的难度。。。你必须学习PKI、PKE等,才能成功。但你不必成为这方面的专家,只要很好地理解它是如何工作的。。。