我需要编写从FTP位置获取PGP加密文件并处理它们的代码。这些文件将使用我的公钥加密(不是我还有一个)。显然,我需要一个可以在Microsoft Access中使用的PGP库。你能推荐一款易于使用的产品吗?
我正在寻找不需要大量PKI知识的东西。理想情况下,可以轻松生成一次性私钥/公钥对,然后有一个简单的解密程序。
答案 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)
答案 4 :(得分:1)
我会寻找命令行加密器/解密器,只需使用正确的参数调用Access应用程序中的exe。
我知道VBA中没有PGP加密器/解密器。
答案 5 :(得分:1)
我不熟悉VBA for Access,但我认为最好的解决方案(也许最简单)就是运行外部命令行PGP实用程序。
答案 6 :(得分:1)
您可以直接从VBA应用程序调用DLL,而无需跨越外部程序:CryptoCX。 PGP还有一个你可以调用的DLL。