Security 从VBA(MS Access)解密PGP加密文件的最简单方法
我需要编写代码,从FTP位置拾取PGP加密文件并对其进行处理。这些文件将用我的公钥加密(我还没有公钥)。显然,我需要一个PGP库,可以在Microsoft Access中使用。你能推荐一个容易使用的吗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的访问,但我认为最好的解决方案(可能
我正在寻找一些不需要大量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等,才能成功。但你不必成为这方面的专家,只要很好地理解它是如何工作的。。。