|
Cyfer is a portable low-level cryptographic library with support for
several programming languages. Cyfer provides implementations of many
message digest (hash), block and stream cipher, and public-key
algorithms.
The library is extremely modular, providing easy way to add or modify
algorithm implementations, or even separating the particular algorithm
from the library physically (suitable for embedded environments).
The generic API provides a consistent way to use the library algorithms,
and allows for algorithm selection at either the compile time or at
runtime, so the application which uses Cyfer can be completely
unaware of the algorithm specifics.
Cyfer is a low-level library. It deals only with various
algorithms, and completely avoids the problems of data representation.
This is most evident in public-key sections - cyfer completely avoids
the existing Public Key Infrastructure (PKI) standards. If you need
this functionality, use the excellent and free
OpenSSL, or some
similar library.
The library design concept emphasises on simplicity and elegance (of
both the algorithm implementations (if possible:) and the support library
code), not maximizing performance or minimizing memory footprint. The algorithm
implementations are straightforward, so they can be used for educational
purposes.
Cyfer is portable to any platform with sane C development environment,
the only requirement being the availability of the GMP (GNU Multiple Precision
arithmetic) library. As the GMP is used only for public-key cryptography, hash
or symmetric cipher components should work everywhere.
Cyfer was developed as a part of my student project for
"Operating Systems 2 :
Computer Security" course at
Faculty of Electrical Engineering and Computer Science
(FER) in Zagreb, Croatia, but continues on as an independent open soruce project
under the BSD license.
Newsflash:
- [2005-11-24] A bug in examples code
- A bug was found in the encdec() function in the examples/pk.c code. The function doesn't
clean up properly, leaving open files. If these files are reopened, the position indicator
doesn't rewind and they seem empty. The fix is to put line
fclose(in); fclose(out);
at the end of the function.
- [2004-09-26] Cyfer 0.6.0 - first public release
- After an approximately ten months of (sometimes fast, sometimes freezed) development, this is
the first public release of Cyfer. Finally :) This version provides support for 9 message digest
algorithms, 12 symmetric ciphers and 4 public-key algorithms, and language bindings for C, C++,
Java, Python, PHP, Perl and C# languages.
|