HcryptoJ Features v0.5-alpha
HCryptoJ is a Java Application Programming Interface (API) for historical
cryptography. It is modelled after the Java Cryptography Extension (JCE).
Encryption/Decryption
Supports the encryption of strings (Java String objects) or
ASCII files.
Ciphers
Can be used to implement any historical cipher that can be defined
as a function from a String to a String.
Default Ciphers
Default Provider classes are supplied which contain implementations
of Caesar, Simple Substitution (passphrase), Vigenere,
Playfair, Affine, RailFence, and Transposition ciphers.
Keys
All Cipher objects are defined with a Key class which can
accomodate a wide range of key types.
Alphabets
Supports a wide range of alphabets including: az, AZ, azAZ, azAZ09,
printable ASCII and the full ASCII character set.
Analyzers
The hcrypto.analyzer package contains a variety of
classes to analyze and solve historical ciphers, including:
- AffineAnalyzer -- automatically solves cryptograms
created with an Affine cipher.
- CaesarAnalyzer -- automatically solves cryptograms
created with a Caesar cipher.
- VigenereAnalyzer -- automatically solves cryptograms
created with Vigenere cipher.
- A variety of Simple Substitution Analyzers
- DigramAnalyzer
- Word Based Analyzer
- Word Based GA Analyzer
- Ngram Based Ga Analyzer
- A variety of text analysis tools
- Histogram -- computes a frequency histogram for a message.
- IndexOfCoincidence -- computes the Index of Coincidence for a message.
Applications
HcryptoJ comes with a couple of very simple applications that
illustrate how to use it. TestCipher is a command-line test
program which encrypts or decrypts a string entered on the command
line. FileCipher is a command-line program that encrypts or
decrypts a file named on the command line. CryptoToolJ is a GUI
program that encrypts and decrypts text entered interactively or via
File I/O. CryptoAppletJ
is a Java applet that supports interactive encryption/decryption of
text for Java 1.1 enabled browsers.
Service Providers
Like the JCE, HcryptoJ enables cryptographic service providers to
develop their own implementations of a new or existing cipher. A service
provider can install a cipher algorithm by defining a Cipher
subclass, a HistoricalKey subclass and a
Provider subclass.
Object Oriented Design
HcryptoJ is modeled after the JCE and is organized into three
packages. For details on the design, see the online
documentation.