2010-09-07 56 views
6

Hasta ahora me he encontrado con Botan y Crypto++ que proporcionan cifrado reversible (por ejemplo, AES) y no reversible (por ejemplo, SHA). Me preguntaba si alguien puede recomendar cualquiera, o alguna otra cosa.Librerías libres de cifrado en C++

+5

SHA es ** ** no un cifrado (o cifrado) Algoritmo: es un método de hash. – ereOn

+0

lo siento, no pude pensar en una sola palabra para describir ambos. Pero sí, sabía –

+0

SHA es una familia de "funciones hash criptográficas". Es por eso que lo encuentras en una biblioteca de cifrado. – MSalters

Respuesta

8

OpenSSL tiene toda la funcionalidad que usted esperaría y a menudo ya está instalada (al menos en Linux).

Admite cifrado simétrico/simétrico, firmas digitales y algoritmos hash. Por ejemplo, puede usar la API de alto nivel OpenSSL EVP para encriptación simétrica.

+0

+1, y además debo señalar que para cosas de mayo, OpenSSL se considera * el * estándar. Además de eso, dependiendo de su campo, si necesita someterse a una auditoría o algo así, OpenSSL como algo reconocido y bien considerado no causará ningún problema, pero alguna otra biblioteca dudosa que haya descargado de un servidor anónimo podría interferir. un palo en las ruedas del auditor. – AviD

+0

No es (por ejemplo) SHA-256 SHA-256 independientemente de la implementación; es determinista para que pueda probarlo. –

+0

@John: incluso si se trata del mismo algoritmo con los mismos resultados (de prueba), la implementación puede ser diferente. A veces, las implementaciones del algoritmo de cifrado (referencia) son defectuosas y son vulnerables a los ataques. AviD significaba que una biblioteca algo más estable como OpenSSL mitigaría tales riesgos. – AndiDog

2

Solía ​​usar libtomcrypt de CPP aunque su escrito en C pura
Se significa enorme !, que tiene pequeña, robusta y sencilla implementación de la API de la mayoría de los cifrados y los hashes de ahí abajo.
No está en GPL, por lo que puede usarlo en proyectos cerrados.

3

Google tiene una biblioteca muy interesante: KeyCzar.

De interés:

  • Simple API (He utilizado Crypto ++, y puede ser de gran alcance ... pero lo que es una molestia!)
  • Claves de rotación y control de versiones (que tienen la intención de hacer que sus claves evolucionar, ¿no?)
  • Safe default!

Francamente, esos 3 puntos son lo que creo que son las consideraciones más importantes una vez que sepas que la implementación es sólida. Especialmente para aquellos de nosotros que no somos expertos en criptografía.

0

Recuerdo vagamente usar xyssl. Proporcionó un enlace directo. link text

0

También se puede usar la biblioteca POCO, para más información visite www.pocoproject.org