|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.bouncycastle.crypto.engines.HC256Engine
public class HC256Engine
HC-256 is a software-efficient stream cipher created by Hongjun Wu. It generates keystream from a 256-bit secret key and a 256-bit initialization vector.
http://www.ecrypt.eu.org/stream/p3ciphers/hc/hc256_p3.pdf
Its brother, HC-128, is a third phase candidate in the eStream contest. The algorithm is patent-free. No attacks are known as of today (April 2007). See http://www.ecrypt.eu.org/stream/hcp3.html
Field Summary | |
---|---|
private byte[] |
buf
|
private int |
cnt
|
private int |
idx
|
private boolean |
initialised
|
private byte[] |
iv
|
private byte[] |
key
|
private int[] |
p
|
private int[] |
q
|
Constructor Summary | |
---|---|
HC256Engine()
|
Method Summary | |
---|---|
java.lang.String |
getAlgorithmName()
Return the name of the algorithm the cipher implements. |
private byte |
getByte()
|
private void |
init()
|
void |
init(boolean forEncryption,
CipherParameters params)
Initialise a HC-256 cipher. |
void |
processBytes(byte[] in,
int inOff,
int len,
byte[] out,
int outOff)
process a block of bytes from in putting the result into out. |
void |
reset()
reset the cipher. |
byte |
returnByte(byte in)
encrypt/decrypt a single byte returning the result. |
private static int |
rotateRight(int x,
int bits)
|
private int |
step()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private int[] p
private int[] q
private int cnt
private byte[] key
private byte[] iv
private boolean initialised
private byte[] buf
private int idx
Constructor Detail |
---|
public HC256Engine()
Method Detail |
---|
private int step()
private void init()
public java.lang.String getAlgorithmName()
StreamCipher
getAlgorithmName
in interface StreamCipher
public void init(boolean forEncryption, CipherParameters params) throws java.lang.IllegalArgumentException
init
in interface StreamCipher
forEncryption
- whether or not we are for encryption. Irrelevant, as
encryption and decryption are the same.params
- the parameters required to set up the cipher.
java.lang.IllegalArgumentException
- if the params argument is
inappropriate (ie. the key is not 256 bit long).private byte getByte()
public void processBytes(byte[] in, int inOff, int len, byte[] out, int outOff) throws DataLengthException
StreamCipher
processBytes
in interface StreamCipher
in
- the input byte array.inOff
- the offset into the in array where the data to be processed starts.len
- the number of bytes to be processed.out
- the output buffer the processed bytes go into.outOff
- the offset into the output byte array the processed data starts at.
DataLengthException
- if the output buffer is too small.public void reset()
StreamCipher
reset
in interface StreamCipher
public byte returnByte(byte in)
StreamCipher
returnByte
in interface StreamCipher
in
- the byte to be processed.
private static int rotateRight(int x, int bits)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |