|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.bouncycastle.crypto.engines.HC128Engine
public class HC128Engine
HC-128 is a software-efficient stream cipher created by Hongjun Wu. It generates keystream from a 128-bit secret key and a 128-bit initialization vector.
http://www.ecrypt.eu.org/stream/p3ciphers/hc/hc256_p3.pdf
It is a third phase candidate in the eStream contest, and 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 | |
---|---|
HC128Engine()
|
Method Summary | |
---|---|
private static int |
dim(int x,
int y)
|
private static int |
f1(int x)
|
private static int |
f2(int x)
|
private int |
g1(int x,
int y,
int z)
|
private int |
g2(int x,
int y,
int z)
|
java.lang.String |
getAlgorithmName()
Return the name of the algorithm the cipher implements. |
private byte |
getByte()
|
private int |
h1(int x)
|
private int |
h2(int x)
|
private void |
init()
|
void |
init(boolean forEncryption,
CipherParameters params)
Initialise a HC-128 cipher. |
private static int |
mod1024(int x)
|
private static int |
mod512(int x)
|
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 |
rotateLeft(int x,
int bits)
|
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 HC128Engine()
Method Detail |
---|
private static int f1(int x)
private static int f2(int x)
private int g1(int x, int y, int z)
private int g2(int x, int y, int z)
private static int rotateLeft(int x, int bits)
private static int rotateRight(int x, int bits)
private int h1(int x)
private int h2(int x)
private static int mod1024(int x)
private static int mod512(int x)
private static int dim(int x, int y)
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 128 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.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |