Domanda

Devo scrivere un codice che preleva i file crittografati con PGP da una posizione FTP e li elabora. I file verranno crittografati con la mia chiave pubblica (non che ne abbia ancora uno). Ovviamente, ho bisogno di una libreria PGP che posso usare da Microsoft Access. Puoi consigliarne uno facile da usare?

Sto cercando qualcosa che non richiede un'enorme quantità di conoscenza della PKI. Idealmente, qualcosa che genererà facilmente la coppia di chiavi privata / pubblica una tantum e quindi avrà una semplice routine per la decrittazione.

È stato utile?

Soluzione

Una soluzione da riga di comando è buona. Se il tuo database è un'applicazione interna, da non ridistribuire, posso consigliare Gnu Privacy Guard . Questo strumento basato sulla riga di comando ti consentirà di fare tutto ciò che è necessario per quanto riguarda lo standard OpenPGP.

All'interno di Access, è possibile utilizzare il comando Shell () in una macro come questa:

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

Questo eseguirà lo strumento da riga di comando per decrittografare il file. Questa sintassi utilizza una versione in chiaro della passphrase segreta. Questa non è la soluzione più sicura, ma è accettabile se il database è interno e utilizzato solo da personale fidato. GnuPG supporta altre tecniche per proteggere la passphrase.

Altri suggerimenti

PGP ha un'opzione da riga di comando per la decrittografia dei file.

Abbiamo un file batch che esegue la decrittografia, passando il nome del file da decrittografare:

File batch:

"C:\Program Files\Network Associates\PGPNT\pgp" +FORCE %1 -z *password* 

Noi che lo chiamiamo da un 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

Spero che ti punti in una direzione utile.

Stu ... una volta ho dovuto scrivere un " Secure SMTP " server in Java ... Il modo più semplice e veloce per farlo è scaricare e / o acquistare PGP. Hanno un SDK che puoi usare per accedere a tutto ciò che vuoi.

Dovrei tornare indietro e vedere se dovevo scrivere un wrapper COM o se ne avevano già uno. (Ho scritto questo server SMTP circa 10 anni fa). Comunque, non scoraggiarti. Circa 5 anni fa, ho scritto un'intera applicazione basata su PGP (basata su openPGP RFC) in C ++, ma il problema era che non potevo usare nessuna libreria esistente. Quindi ho dovuto scrivere tutta quella roba da solo. E, ho usato GPG, OpenPGP e PGP per i test, ecc ....

Quindi, potrei persino fornirti aiuto su come decodificare queste cose in VBA. Non è impossibile, (potrebbe essere lento come l'inferno, ma non impossibile), e NON sono uno per "sborsare ed eseguire roba cmdline per fare questo lavoro per te, in quanto ti aprirà a una sicurezza SERIA rischi, come suggerimento di hurcane (per esempio) farà sì che la tua passphrase venga mostrata a strumenti come ProcExp). Il primo passo è imparare come funziona PKE, ecc. Quindi, i passaggi che devi fare per ottenere ciò che desideri.

Questo è qualcosa a cui sarei interessato ad aiutare dal momento che sono sempre uno a scrivere codice che tutti dicono che non si può fare. :) Inoltre, possiedo il codice sorgente dell'app che ho scritto, a causa di fusioni, chiusure, ecc ...

È stato originariamente scritto per l'industria petrolifera e del gas, quindi so che è sicuro. Questo non vuol dire che non ho QUALUNQUE difetti di sicurezza nel codice, ma penso che sia stabile. So di avere un problema con il mio codice Chinese Remainder Threory. Per qualche motivo quando uso quella scorciatoia, non riesco a decodificare correttamente i dati, ma se uso RSA "long way" funziona ...

Ora, questa applicazione non è mai stata completata, quindi non supporto cose come coppie di chiavi DSA, ma supporto coppie di chiavi RSA, con SHA1, MD5, usando IDEA, AES, (I THINK il mio codice 3DES non funziona correttamente, ma potrei averlo corretto da allora). Non ho ancora implementato la compressione, ecc ... Ma, mi piacerebbe un motivo per tornare indietro e lavorare di nuovo su questo codice.

I / POTREBBE / renderti un oggetto COM che potresti chiamare da VBA passando i dati Base64 originali, insieme ai dati chiave Base64 (o un puntatore a un file chiave su disco) e una passpsshrase per decodificare i file ....

Pensaci ... Fammi sapere ..

Nel corso degli anni, ho raccolto codice vbScript per fare cose come MD5, SHA1, IDEA e altre routine di crittografia, ma non le ho scritte. Diavolo, probabilmente potresti semplicemente interfacciarti con Microsoft CryptoAPI, e suddividere ogni azione nelle sue parti principali e farlo funzionare ancora. (Non troverai una chiamata Micosoft CryptoAPI come " DecryptPGP () " ... Tutto dovrebbe essere fatto in blocchi).

Fammi sapere se posso aiutarti.

Vorrei cercare un codificatore / decodificatore da riga di comando e chiamare l'exe dall'applicazione Access con i parametri giusti.

Non esiste un codificatore / decodificatore PGP in VBA che conosco.

Non ho familiarità con VBA for Access, ma penso che la soluzione migliore (forse la più semplice) sarebbe eseguire l'utilità PGP da riga di comando esterna.

Esiste una DLL che puoi chiamare direttamente dall'applicazione VBA senza dover estendere un programma esterno: Cryptocx . PGP ha anche una DLL che puoi chiamare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top