最简单的方法来解密PGP加密的文件从VBA(MS Access)
-
02-07-2019 - |
题
我需要编写代码,拿起PGP加密的文件从一个FTP位置和进程。该文件将加密的用我的公用钥匙(不,我有一个)。显然,我需要一个PGP库,我可以用从在微软存取。你能推荐一个容易使用?
我在寻找的东西,这并不需要大量的PKI知识。理想的是,这将很容易产生一个关闭的私人/公共密钥对,然后有一个简单的例行程序进行解密。
解决方案
命令行解决方案很好。如果您的数据库是内部应用程序,不能重新分发,我可以推荐 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支持其他技术来保护密码。
其他提示
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 edition)进行此操作
斯图...我曾经写一个"安全SMTP"服务器在Java...最简单和快捷的方式做到这一点的是以下载,和/或购买PGP.他们有一个SDK,可用于访问在任何你想要的东西。
我必须回去看看如果我不得不写COM包装,或者如果他们已经有一个。(我写了这个SMTP server约10年前)。不管怎么说,不要气馁。大约5年前,我写了一整个PGP基础的应用程序(根据openPGP RFC)在C++,但抓的是我 不 允许使用任何现有的图书馆。所以我不得不写所有的东西我自己。而且,我用的全球公益,OpenPGP,并PGP进行测试,等等。
因此,我甚至可以提供的帮助你在如何解码这个东西在VBA。这不是不可能的,(它可以是缓慢的地狱,但不是不可能的),和我不是一个"空壳和运行命令行事要做的工作就像这个给你,因为它会打开你一些严重的安全风险,因为hurcane的建议(例如)会导致您的密码是显示给工具,如ProcExp).第一步是学习如何者踏的工作,等等。然后,该步骤,你需要做得到你想要什么。
这是什么东西我会感兴趣帮助,因为我总是一个编写代码,每个人都说不能这样做。:)另外,我自己的源代码的应用程序,我写了,因为合并、封闭,等等。
它最初是用于石油和天然气行业,所以我知道它是安全的。这并不是说我没有 任何 安全缺陷的编码,但我认为这是稳定的。我知道我有一个问题与我的中国其余Threory码..由于某些原因,当我使用这短短的一切,我不能译码的数据正确,但是,如果我用的是RSA"很长的路要走"它的作品...
现在,这项申请从未完全完成,所以我不支持的东西喜欢每日生活津贴的钥匙-对,但我支持RSA密钥对,SHA1,MD5,使用的想法,AES(I 想想 我3DES码不正常工作,但我可以有固定的,因为).我没有执行压缩,还没有,等等...但是,我的爱的理由,以回去工作,这个代码。
I/能/让你COM对象的你可以叫从VBA通过的原Base64数据,随着Base64关键数据,(或指针的一个关键文件的磁盘上),以及passpsshrase解码文件。...
想一想...让我知道..
多年来,我已经收集vbScript码做的事情就像MD5,SHA1,想法和其他加密程序,但我没有写他们的。地狱的,你很可能只是口与微软的CryptoAPI,并打破每个行动到它的核心部分和仍然得到它的工作。(你不会找到一个Micosoft CryptoAPI呼,如"DecryptPGP()"...它们都有工作要做大块).
让我知道如果我可以提供帮助。
我会寻找命令行加密器/解密器,只需使用正确的参数从Access应用程序中调用exe。
我知道VBA中没有PGP加密器/解密器。
我不熟悉VBA for Access,但我认为最好的解决方案(也许最简单)就是运行外部命令行PGP实用程序。
您可以直接从VBA应用程序调用DLL,而无需跨越外部程序: CryptoCX 。 PGP还有一个你可以调用的DLL。