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

时间:2008-09-26 12:15:14

标签: security ms-access encryption pgp

我需要编写从FTP位置获取PGP加密文件并处理它们的代码。这些文件将使用我的公钥加密(不是我还有一个)。显然,我需要一个可以在Microsoft Access中使用的PGP库。你能推荐一款易于使用的产品吗?

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

7 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

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

希望指出你有用的方向。

答案 2 :(得分:3)

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

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

因此,我甚至可以为您提供有关如何在VBA中解码此内容的帮助。这不是不可能的,(它可能会很慢,但并非不可能),而且我不是一个“为你做这样的工作并运行cmdline的东西,因为它会打开你一些严重的安全风险,因为hurcane的建议(例如)会导致你的密码被显示给像ProcExp这样的工具。第一步是学习PKE的工作原理等等。然后,你需要采取的步骤来获得你想要的东西。

这是我有兴趣帮助的事情,因为我总是一个编写每个人都说无法完成的代码。 :)另外,我拥有我写的应用程序的源代码,因为合并,闭包等......

它最初是为石油和天然气行业编写的,所以我知道它是安全的。这并不是说我在代码中没有任何安全漏洞,但我认为它是稳定的。我知道我的中文剩余Threory代码存在问题。出于某种原因,当我使用该快捷方式时,我无法正确解码数据,但如果我使用RSA“漫长的方式”它可以工作... < / p>

现在,这个应用程序从未完全完成,所以我不支持像DSA密钥对这样的东西,但是我支持使用IDEA,AES支持的SHAA,MD5的RSA密钥对(I THINK < / em>我的3DES代码无法正常工作,但我可能已经解决了这个问题)。我还没有实现压缩等等......但是,我有理由再回过头来处理这段代码。

I / COULD /使你成为一个COM对象,你可以从VBA调用传入原始Base64数据,以及Base64密钥数据(或指向磁盘上的密钥文件的指针),以及passpsshrase来解码文件....

想一想......让我知道..

多年来,我收集了用于处理MD5,SHA1,IDEA和其他加密例程的vbScript代码,但我没有编写它们。地狱,你可能只是与微软的CryptoAPI接口,并将每个动作分解为它的核心部分,并仍然可以使它工作。 (你不会找到像“DecryptPGP()”这样的Micosoft CryptoAPI调用......它必须以块的形式完成。

Lemme知道我是否可以提供帮助。

答案 3 :(得分:3)

您可以将OpenPGPBlackbox (ActiveX edition)用于此

答案 4 :(得分:1)

我会寻找命令行加密器/解密器,只需使用正确的参数调用Access应用程序中的exe。

我知道VBA中没有PGP加密器/解密器。

答案 5 :(得分:1)

我不熟悉VBA for Access,但我认为最好的解决方案(也许最简单)就是运行外部命令行PGP实用程序。

答案 6 :(得分:1)

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