Libreria de Ciframiento en C

Definicion: Consideramos una libreria de ciframiento aquella que tiene funciones relacionadas: ciframiento, hash, ..etc.

Que Quiero Conseguir

  • Una libreria que tenga al menos:  AES, 3DES, SHA*, MD5 y BASE64
  • Escrita en ANSI C o C++ (aunque prefiero C)
  • GPL o LGPL
  • Probada en Windows y GNU/Linux
  • Portable a 64 bits (transparente a la arquitectura)


Estos SON mis requerimientos, no implica que lo que descarto es malo o que no son útiles.
Simplemente NO son lo que YO quiero según mi deseos.


Despues de  buscar en Freshmeat, Sourceforge y Free Software Directory de GNU tenemos (en el orden que las encontre):

1. Beecrypt
BeeCrypt is a cryptography library that contains highly optimized C and assembler implementations of many well-known algorithms including Blowfish, MD5, SHA-1, Diffie-Hellman, and ElGamal. Unlike some other crypto libraries, BeeCrypt is not designed to solve one specific problem, like file encryption, but to be a general purpose toolkit which can be used in a variety of applications. There are also no patent or royalty issues associated with BeeCrypt. 

2. XySSL - PolarSSL
CensorNet is an Internet Management Appliance designed to control and monitor individuals accessing Internet resources on a  the individual or workstation concerned has the correct access profile to allow the request to be completed.

3. YaSSL/TaoCrypt/CyaSSL
TaoCrypt is a portable, fast, cryptographic library for most needs. Its features include one way hash functions: SHA-1, MD2, MD4, MD5, RIPEMD-160; message authentication codes: HMAC; block ciphers: DES, Triple-DES, AES, Blowfish, Twofish; stream ciphers: ARC4; public key cryptography: RSA, DSA, Diffie-Hellman; password based key derivation: PBKDF2 from PKCS #5; a pseudo random number generator and large integer support. There is also support for Base 16/64 encoding/decoding, DER encoding/decoding, and X.509 processing.

The CyaSSL software package is a fast, dual-licensed implementation of SSL for embedded and small footprint devices. It includes SSL client libraries and an SSL server implementation. It supports multiple APIs including an OpenSSL compatibility interface. TLS 1.1 is supported along with cipher suites for AES, 3DES, RC4, HC-128, and RABBIT.

4. Botan
Botan (formerly OpenCL) is a library of cryptographic algorithms. It includes a wide selection of block and stream ciphers, public key algorithms, hash functions, and message authentication codes, plus a high level filter-based interface. The home page has a list of supported algorithms.

5. LibTomCrypt
LibTomCrypt is a cryptographic toolkit that gives developers an array of well known published block ciphers, one-way hash functions, chaining modes, pseudo- random number generators, public key cryptography, and many other routines.

6. Nettle
Nettle is a cryptographic library designed to fit any context: in crypto toolkits for object-oriented languages, in applications like LSH or GNUPG, or even in kernel space. Users need to keep track of available algorithms and their properties and variants. The algorithm selection process is dictated by the protocol you want to implement. Also, requirements of applications differ, so an API that fits one application well may be useless for another (which is why so many different cryptographic libraries exist).

7. Mcrypt
mcrypt is a program for encrypting files or streams. It is intended to be a replacement for the old UNIX crypt. It uses well-known and well-tested algorithms like DES, BLOWFISH, TWOFISH, ARCFOUR, CAST-128, and more in several modes (CBC, CFB, etc.). It also has a compatibility mode with the old UNIX crypt and Solaris des.

Libmcrypt is a library which provides a uniform interface to several symmetric encryption algorithms. It is intended to have a simple interface to access encryption algorithms in ofb, cbc, cfb, and ecb modes. The algorithms it supports are DES, 3DES, RIJNDAEL, Twofish, IDEA, GOST, CAST-256, ARCFOUR, SERPENT, SAFER+, and more. The algorithms and modes are also modular so you can add and remove them on the fly without recompiling the library.

8. GNU-Crytpo
GNU Crypto, part of the GNU project, released under the aegis of GNU, aims at providing free, versatile, high-quality, and provably correct implementations of cryptographic primitives and tools in the Java programming language for use by both programmers and end-users.

9. CCrypt
ccrypt is a utility for encrypting and decrypting files and streams. It was designed to replace the standard Unix 'crypt' utility, which is notorious for using a very weak encryption algorithm. 'ccrypt' is based on the Rijndael cipher, which is the U.S. government's chosen candidate for the Advanced Encryption Standard (AES). This cipher is believed to provide very strong security.

10. CryptoTools
CryptoTools is a suite of encryption libraries to help programmers add encryption to their applications. Components for all encryption algorithms and all programming languages are available in one single package.

11. CryptoMX Tools
CryptoMX Tools is a set of encryption, conversion, hashing, cipher, and steganography tools designed to work on any operating system with any Javascript-capable browser.

12. Keyczar
Keyczar is a cryptographic toolkit designed to make it easier and safer for developers to use cryptography in their applications. It supports authentication and encryption with both symmetric and asymmetric keys. Cryptography is easy to get wrong. Developers can choose improper cipher modes, use obsolete algorithms, compose primitives in an unsafe manner, or fail to anticipate the need for key rotation. Keyczar abstracts some of these details by choosing safe defaults, automatically tagging outputs with key version information, and providing a simple programming interface.

13. Libgcrypt
Libgcrypt is a general-purpose cryptographic library based on the code from GnuPG. It provides functions for all cryptographic building blocks: symmetric ciphers (AES, DES, Blowfish, CAST5, Twofish, and Arcfour), hash algorithms (MD4, MD5, RIPE-MD160, SHA-1, and TIGER-192), MACs (HMAC for all hash algorithms), public key algorithms (RSA, ElGamal, and DSA), large integer functions, random numbers, and a lot of supporting functions.

14. MatrixSSL
PeerSec MatrixSSL is an embedded SSL implementation designed for small footprint devices and applications requiring low overhead per connection. The library is less than 50K on disk with cipher suites. It includes SSL client and SSL server support, session resumption, and implementations of RSA, 3DES, ARC4, SHA1, and MD5. The source is well documented and contains portability layers for additional operating systems, cipher suites, and cryptography providers.

15. ocf-linux
A Linux port of the OpenBSD/FreeBSD Cryptographic Framework (OCF). This port aims to bring full asynchronous HW/SW crypto acceleration to the Linux kernel, OpenSwan, OpenSSL and applications using DES, 3DES, AES, MD5, SHA, PublicKey, RNGs and more.

16. libv
A portable C library of common data types and algorithms (such as linked lists, dynamic arrays, binary trees, stacks and queues, base64 encoder/decoder, MD5). Efficient, stable, fast, secure and extremely well documented.

17. vilahuaer
C code to encrypt files or strings using AES 256 , AES 256 CTR or RC4 encryption methods ,the code is optimized to very fast code execution on Win32 when new AMD or Intel processors are available ,public domain


Pero entonces aqui comienza la seleccion. OJO una vez encuentro alguna caracteristica que descarte dejo de evaluar esa distribución.

 Actualizado  Version Tam  Lang  Compila Test 64bits Other
 Beecrypt LGPL 2004-12-21  4.2.1  862k C  No en 64 ?  No  -  Solo 32bits
 XySSL/PolarSSL GPL/BSD 2008-05-17  (0.9) 0.11 207K C Ok  Ok Si    
 YaSSL/TaoCrypt  GPL 2008-11-13 1.9.6  873k  C++  Ok Ok Si    Lenguaje
 Botan  BSD 2009-07-12  1.8.4 2.9M  C++         Lenguaje
 LibTomCrypt  GPL ?? 2006-12-22  1.16 1.6M C         Abandonado
 Nettle  GPL/LGPL 2009-06-08 2.0 867k C          
 Mcrypt  LGPL 2009-06-19  2.5.8 1.3M C       No Base64  No sirve
 GNU-Crytpo GPL 2004-02-11 2.0.1  3.8M Java - - - -  Lenguaje
 CCrypt  GPL 2009-06-05 1.8 650K C         No libreria
 CryptoTools Comercial 2009-06-09 - 1.3M Todos  - - - - Comercial
 CryptoMX Tools GPL 2006-01-12 1.5.8 245k  JavaScript - - - -  Abandonado
 Keyczar Apache 2009-06-29 0.6b 105k Java/Python - - - - Lenguaje
 Libgcrypt Comercial  ??  ??  -  - -  -  -  -  Comercial
 MatrixSSL  GPL/Com  2009-06-24 1.8.7b - - -  -  - -  Comercial
 ocf-linux BSD ? 2008-09-27 20080917 220k - No  -  -  - Primitivo
 libv GPL 2007-08-19  - - C   -   -   -  Solo Hash No sirve
 vilahuaer  -  -  - - -  - - - -  Abandonado


Los finalistas

 PolarSSL y  Nettle