Secure encryption and decryption of files and streams
Updated March 28, 2004
ccrypt is a utility for encrypting and decrypting files and streams.
It was designed as a replacement for 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, see
http://www.nist.gov/aes/). This cipher is believed to provide very
Unlike unix crypt, the algorithm provided by ccrypt is not symmetric,
i.e., one must specify whether to encrypt or decrypt. The most common
way to invoke ccrypt is via the commands ccencrypt and ccdecrypt.
There is also a ccat command for decrypting a file directly to the
terminal, thus reducing the likelihood of leaving temporary plaintext
files around. In addition, there is a compatibility mode for
decrypting legacy unix crypt files. An emacs mode is also supplied for
editing encrypted text files.
Encryption and decryption depends on a keyword (or key phrase)
supplied by the user. By default, the user is prompted to enter a
keyword from the terminal. Keywords can consist of any number of
characters, and all characters are significant (although ccrypt
internally hashes the key to 256 bits). Longer keywords provide better
security than short ones, since they are less likely to be discovered
by exhaustive search.
For a detailed description of the encryption algorithm used by ccrypt,
see the man page.
Downloading and Installing from Source
The current version of ccrypt can be downloaded as a gzipped tar
archive from http://ccrypt.sourceforge.net/. You can unpack the
archive with a command such as
tar -zxf ccrypt-XXX.tar.gz
For compiling and installation, please follow the instructions in
the file INSTALL.
The only non-standard configuration option is --disable-libcrypt.
Normally, ccrypt will be linked against the libcrypt library, if
available. If this library is not available, or if the
--disable-libcrypt option is given to ./configure, then we will use
our own replacement for this library. This is useful for creating
binary distributions when we don't want to distribute libcrypt.so.
Downloading and Installing Precompiled Distributions
ccrypt is also available in precompiled formats for a number of
popular platforms, including Linux, MacOS X, FreeBSD, Sun Solaris,
AIX, and Windows under CygWin. In each case, just install the
binaries in one of the places where the operating system usually
looks for them, such as /usr/local/bin. You should also create
symbolic links to the ccrypt binary named ccencrypt, ccdecrypt, and
ccat; when ccrypt is invoked by one of these names, its default
behavior changes. To create the appropriate links, change to the
directory where you have installed ccrypt, and run the commands
ln -s ccrypt ccencrypt
ln -s ccrypt ccdecrypt
ln -s ccrypt ccat
You may also want to install the man page by copying ccrypt.1 to an
appropriate directory, such as /usr/local/man/man1.
Windows users see the file README.win.
For users of the Redhat Package Manager, ccrypt is also available
as a source RPM or binary RPM.
Usage: ccrypt [mode] [options] [file...]
ccencrypt [options] [file...]
ccdecrypt [options] [file...]
ccat [options] file...
-e, --encrypt encrypt
-d, --decrypt decrypt
-c, --cat cat; decrypt files to stdout
-x, --keychange change key
-u, --unixcrypt decrypt old unix crypt files
-h, --help print this help message and exit
-V, --version print version info and exit
-L, --license print license info and exit
-v, --verbose print progress information to stderr
-q, --quiet run quietly; suppress warnings
-f, --force overwrite existing files without asking
-m, --mismatch allow decryption with non-matching key
-E, --envvar var read keyword from environment variable (unsafe)
-K, --key key give keyword on command line (unsafe)
-k, --keyfile file read keyword(s) as first line(s) from file
-P, --prompt prompt use this prompt instead of default
-S, --suffix .suf use suffix .suf instead of default .cpt
-s, --strictsuffix refuse to encrypt files which already have suffix
-F, --envvar2 var as -E for second keyword (for keychange mode)
-H, --key2 key as -K for second keyword (for keychange mode)
-Q, --prompt2 prompt as -P for second keyword (for keychange mode)
-t, --timid prompt twice for encryption keys (default)
-b, --brave prompt only once for encryption keys
-r, --recursive recurse through directories
-R, --rec-symlinks follow symbolic links as subdirectories
-l, --symlinks dereference symbolic links
-T, --tmpfiles use temporary files instead of overwriting (unsafe)
-- end of options, filenames follow
For detailed usage information, see the man page.
ccrypt comes with an emacs package for reading and writing encrypted
files. The package is called jka-compr-ccrypt, and it is based
directly on the jka-compr package which is part of GNU Emacs. It
handles both encrypted and compressed files (although currently not
encrypted compressed files).
To use the package, simply load jka-compr-ccrypt and edit as usual.
When you open a file with the ".cpt" extension, emacs will prompt you
for a password for the file. It will remember the password for the
buffer, and when you save the file later, it will be automatically
encrypted again (provided you save it with a ".cpt" extension). Except
for the password prompt, the operation of the package should be
transparent to the user. The package also handles compressed ".gz",
".bz2", and ".Z" files, and it should be used instead of, not in
addition to, jka-compr. The command M-x ccrypt-set-buffer-password can
be used to change the current password of a buffer.
The simplest way to use this package is to include the lines
(setq load-path (cons "path" load-path))
(require 'jka-compr-ccrypt "jka-compr-ccrypt.el")
in your .emacs file, where path is the directory which holds the file
Support and Reporting Bugs
Ccrypt has a project page on SourceForge at
http://sourceforge.net/projects/ccrypt/. There you will find facilities
for reporting bugs, submitting patches, asking for support, asking for
features, or discussing ccrypt in general. You are encouraged to use
these facilities. You can also send email to the author.
Copyright (C) 2000-2004 Peter Selinger <selinger at users.sourceforge.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
Peter Selinger's GPG key fingerprint is:
12A2 4B3C 3790 B688 E484 7A98 A68B CC37 CA31 696A