|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
java.lang.Object
|
+--org.logi.crypto.Crypto
|
+--org.logi.crypto.keys.K
|
+--org.logi.crypto.keys.SymmetricKey
|
+--org.logi.crypto.keys.CaesarKey
The Caesar algorithm is supposedly the one Julius Caesar used by hand many centuries ago. As you can imagine, this is NOT A STRONG CIPHER, but included only to show how to write a very simple Key class for the logi.crypto package. Often, the first assignment given to cryptography students is to break this cipher given no known plaintext.
Data is encrypted byte-by-byte by adding a constant value to it and taking the 8 lowest order bits.
The CDS for a CaesarKey object is CaesarKey(n) where
n is a value in the range 0..255.
| Fields inherited from class org.logi.crypto.Crypto |
BIT, cdsPath, EMPTY_ARRAY, FOUR, keySource, NIBBLE, ONE, primeCertainty, random, TWO, ZERO |
| Fields inherited from interface java.security.Key |
serialVersionUID |
| Constructor Summary | |
CaesarKey()
Create a new random Caesar key. |
|
CaesarKey(byte shift)
Create a new Caesar key with the specified shift. |
|
| Method Summary | |
int |
cipherBlockSize()
The block-size for the Caesar cipher is one byte. |
void |
decrypt(byte[] source,
int i,
byte[] dest,
int j)
Decrypt one byte. |
void |
encrypt(byte[] source,
int i,
byte[] dest,
int j)
Encrypt one byte. |
boolean |
equals(java.lang.Object o)
Return true iff the two keys are equivalent. |
java.lang.String |
getAlgorithm()
The name of the algorithm is "Caesar". |
byte[] |
getEncoded()
Return encoded version. |
Fingerprint |
getFingerprint()
Return the key's fingerprint using the default hash function. |
Fingerprint |
getFingerprint(java.lang.String algorithm)
Return the key's fingerprint using the specified hash function. |
java.lang.String |
getFormat()
Returns the name of the key-encoding format. |
int |
getSize()
The key-size for the Caesar cipher is 1 byte. |
int |
hashCode()
Return a hash-code based on the keys SHA1 fingerprint. |
boolean |
matches(Key key)
Returns true if this and key are the same symmetric key. |
Fingerprint |
matchFingerprint()
Returns the default fingerprint of the matching key in the key-pair. |
Fingerprint |
matchFingerprint(java.lang.String algorithm)
Returns the default fingerprint of the matching key in the key-pair. |
static CaesarKey |
parseCDS(java.lang.String[] param)
Used by Crypto.fromString when parsing a CDS. |
int |
plainBlockSize()
The block-size for the Caesar cipher is one byte. |
java.lang.String |
toString()
Return a CDS for this key. |
| Methods inherited from class org.logi.crypto.Crypto |
binString, binString, ensureArrayLength, ensureArrayLength, equal, equalRelaxed, equalSub, fromHexNibble, fromHexString, fromString, fromString, hexString, hexString, hexString, hexString, hexString, initRandom, initRandom, makeClass, makeInt, makeLong, makeSessionKey, pastSpace, pickBits, pickBits, prettyPrint, prettyPrint, readBlock, readInt, trimArrayLength, trimArrayLength, trimLeadingZeroes, writeBytes, writeBytes, writeInt |
| Methods inherited from class java.lang.Object |
getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface org.logi.crypto.keys.Key |
getFingerprint, getFingerprint, hashCode, matches, matchFingerprint, matchFingerprint |
| Methods inherited from interface org.logi.crypto.io.PrettyPrintable |
prettyPrint, prettyPrint |
| Methods inherited from interface java.security.Key |
getEncoded, getFormat |
| Constructor Detail |
public CaesarKey(byte shift)
public CaesarKey()
| Method Detail |
public static CaesarKey parseCDS(java.lang.String[] param)
throws InvalidCDSException
A valid CDS can be created by calling the toString() method.
InvalidCDSException - if the CDS is malformed.Crypto.fromString(String)public int getSize()
getSize in interface Keypublic final int plainBlockSize()
plainBlockSize in interface EncryptionKeypublic final int cipherBlockSize()
cipherBlockSize in interface EncryptionKeypublic java.lang.String getAlgorithm()
getAlgorithm in interface Keypublic final boolean equals(java.lang.Object o)
equals in class java.lang.Objectpublic java.lang.String toString()
toString in class java.lang.ObjectCrypto.fromString(java.io.Reader)
public final void encrypt(byte[] source,
int i,
byte[] dest,
int j)
source[i] is encrypted and put in
dest[j].encrypt in interface EncryptionKey
public final void decrypt(byte[] source,
int i,
byte[] dest,
int j)
source[i] is decrypted and put in
dest[j].decrypt in interface DecryptionKeypublic boolean matches(Key key)
Symmetric keys simply call equals(key).
public final Fingerprint getFingerprint()
getFingerprint in interface Key
public final Fingerprint getFingerprint(java.lang.String algorithm)
throws InvalidCDSException
getFingerprint in interface KeyInvalidCDSException - if the specified hash function is not
available.public Fingerprint matchFingerprint()
matchFingerprint in interface Key
public Fingerprint matchFingerprint(java.lang.String algorithm)
throws InvalidCDSException
matchFingerprint in interface KeyInvalidCDSException - if the specified hash function is not
available.public final int hashCode()
hashCode in interface KeyhashCode in class java.lang.Objectpublic byte[] getEncoded()
getEncoded in interface java.security.Keypublic java.lang.String getFormat()
getFormat in interface java.security.Key
|
||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||
| SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||
Copyright (c) 1997-2001 Logi Ragnarsson - Distributed under the GPL