Domanda

Sto cercando due funzioni concettualmente simili a queste:

// returns the encrypted text
string encrypt( string public_key, string pass_phrase, string text );
// returns the original text
string decrypt( string private_key, string pass_phrase, string encrypted_text );

dove string potrebbe essere un char*, un std::string o qualcosa di facilmente convertibili a quei due. E dove public_key e private_key possono essere praticamente qualsiasi cosa, dalle chiavi generate con alcuni comandi (GPG / ssl roba o altro), per le chiavi generate con altri funzioni semplici.

Ho guardato in alcune librerie di crittografia (Libgcrypt, libgpgme, openssl ...), ma non sembra affatto facile da implementare tali funzioni con queste librerie: richiedono una conoscenza non superficiale sulla crittografia asimmetrica e un sacco di codice.

In ogni caso questo compito non sembra raro. Come posso realizzare le due funzioni sopra?

È stato utile?

Soluzione

Purtroppo, la crittografia sempre richiede una conoscenza non superficiale degli algoritmi coinvolti. E 'difficile da ottenere. Il "Manuale di Applied Cryptography" è una guida relativamente leggibile per i vari algoritmi disponibili quindi è probabilmente sguardo un valore.

Si potrebbe anche provare cryptlib . Sembra avere un disegno ben più livelli che ti dà default sensibili per un sacco di parametri in modo da poter iniziare spera senza doversi preoccupare troppo dei dettagli.

Altri suggerimenti

Quando qualcuno chiede per un facile crittografia, posso solo consigliare KeyCzar .

Non solo fornisce un'interfaccia pulita in diverse lingue (che possono utilizzare gli stessi tasti), ma anche un meccanismo per gestire rotazioni chiave e simili.

E, naturalmente, le impostazioni predefinite di sicurezza per gli algoritmi implementati in modo che non c'è bisogno di preoccuparsi dei dettagli tecnici.

In realtà, la migliore combinazione facile e sicuro che ho visto finora.

Supponendo che non è necessario agnostico piattaforma di qualcosa, Cryptography Next Generation (CNG) è una relativamente nuova API di crittografia in Windows ed è sorprendentemente intuitivo e facile da usare. Ho scritto un articolo che include esempi di tutte le principali operazioni di crittografia è molto probabile che necessità nelle applicazioni tipiche. Il codice di esempio per l'articolo fornisce anche un esempio di lavoro completo per queste operazioni che utilizzano Visual C ++.

http://msdn.microsoft.com/en-us/magazine/ cc163389.aspx

Per il trattamento di chiavi pubbliche e private come stringhe si può semplicemente usare Base64 o una codifica simile.

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