2010-09-07 22 views
6

Finora mi sono imbattuto in Botan e Crypto++ che forniscono entrambe la crittografia reversibile (ad esempio AES) e non reversibile (ad esempio SHA). Mi chiedevo se qualcuno può raccomandare sia, o qualcos'altro?Librerie di crittografia C++ libere

+5

SHA è ** non ** una crittografia (o cifra) algoritmo: si tratta di un metodo di hashing. – ereOn

+0

scusate, non ho potuto pensare ad una sola parola per descriverle entrambe. Ma sì, lo sapevo –

+0

SHA è una famiglia di "funzioni di hash crytography". Ecco perché lo trovi in ​​una libreria crittografica. – MSalters

risposta

8

OpenSSL ha tutte le funzionalità che ci si aspetterebbe e spesso è già installato (almeno su Linux).

Supporta crittografia asimmetrica/simmetrica, firme digitali e algoritmi di hashing. Ad esempio, è possibile utilizzare l'API di livello superiore OpenSSL EVP per la crittografia simmetrica.

+0

+1, e inoltre dovrei sottolineare che per cose maggio, OpenSSL è considerato * lo * standard. Inoltre, a seconda del tuo campo, se devi sottoporti a un controllo o qualcosa del genere, OpenSSL come qualcosa riconosciuto e ben considerato non causerà alcun problema, ma alcuni altri dubbia libreria scaricata da un server anonimo potrebbe colpire un bastone nelle ruote dell'auditor. – AviD

+0

Non è (ad esempio) SHA-256 SHA-256 indipendentemente dall'implementazione: è deterministico, quindi è possibile testarlo. –

+0

@John: Anche se si tratta dello stesso algoritmo con gli stessi risultati (test), l'implementazione potrebbe essere diversa. A volte, le implementazioni dell'algoritmo di codifica (riferimento) sono imperfette e vulnerabili agli attacchi. AviD significava che una libreria un po 'più stabile come OpenSSL avrebbe mitigato tali rischi. – AndiDog

2

che ho utilizzato per la libtomcrypt CPP anche se il suo scritto in puro C.
È enorme !, significa che ha piccolo, robusto e semplice implementazione API della maggior parte dei cifrari e gli hash laggiù.
Non in GPL, quindi è possibile utilizzarlo in progetti chiusi.

3

Google ha una libreria molto interessante: KeyCzar.

Di interesse:

  • semplice API (ho usato Crypto ++, e può essere potente ... ma che fatica!)
  • chiavi di rotazione e il controllo delle versioni (non intenzione di fare le chiavi evolve, vero?)
  • Impostazioni predefinite sicure !!

Francamente, quei 3 punti sono quelli che ritengo siano le considerazioni più importanti una volta che sai che l'implementazione è valida. Soprattutto per quelli di noi che non sono esperti di crittografia.

0

Mi ricordo vagamente di usare xyssl. Fornito un collegamento diretto. link text

0

Inoltre è possibile utilizzare libreria di Poco, per ulteriori informazioni visitare www.pocoproject.org